java - 使用 Infura 在 Java Android 中运行 IPFS 节点

标签 java android ipfs

我正在尝试从 Java Android 应用程序连接到 Infura 节点。 我正在按照这些文档连接到 infura 节点。

https://kauri.io/managing-storage-in-a-java-application-with-ipfs/3e8494f4f56f48c4bb77f1f925c6d926/a

https://github.com/ipfs-shipyard/java-ipfs-http-client/issues/115

代码:

package com.example.javahttp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;

import io.ipfs.api.IPFS;

public class MainActivity extends AppCompatActivity {
    IPFS ipfs ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new MyTask().execute();
    }
    private class MyTask extends AsyncTask<Void , Void, Void > {

        @Override
        protected Void doInBackground(Void... voids) {
            IPFS ipfs = new IPFS("/dnsaddr/ipfs.infura.io/tcp/5001/https");

            try{
                System.out.println("connected");
                System.out.println("id: "+ ipfs.id());
            }catch(Exception e){
                System.out.println("not connected"+e);
            }


            return null;
        }


    }


}

我收到此错误。

java.lang.RuntimeException: IOException contacting IPFS daemon.
    Trailer: null ipfs method not allowed

请提出任何建议。

最佳答案

我不明白为什么会出现这样的错误,但是当我使用普通的 java 类来连接它时。有可能,你可以引用我的存储库blockchain with java看看你是否拥有所有相关的依赖项,并且你是否已经正确执行了它,因为我不熟悉 android 但我熟悉 web3j。

您可以使用以下代码连接 infura 节点并向其解析文件。

import io.ipfs.api.IPFS;
import io.ipfs.api.MerkleNode;
import io.ipfs.api.NamedStreamable;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class App {

    public static void main(String[] args) throws IOException {
        IPFS ipfs = new IPFS("/dnsaddr/ipfs.infura.io/tcp/5001/https");
        try {
            NamedStreamable.InputStreamWrapper is = new NamedStreamable.InputStreamWrapper(new FileInputStream());
            MerkleNode response = ipfs.add(is).get(0);

        } catch (IOException ex) {
            throw new RuntimeException("Error whilst communicating with the IPFS node", ex);
        }
    }

}

关于java - 使用 Infura 在 Java Android 中运行 IPFS 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61397421/

相关文章:

java - Spring boot - 服务类为空

java - 有没有办法在不使用相机方法的情况下在 Android 中使用手电筒?

java - 来自 Java 的缓存路径

android - Robolectric 在尝试访问原始文件夹中的资源时抛出 Resources$NotFoundException

java - 如何使用字符串将项目添加到 java 列表中?

android - 阻止 BroadCastReceiver 在 Android 中触发应用程序更新

Android音频FFT显示基频

algorithm - IPFS : is it possible? 中的哈希冲突/限制

ethereum - 如何使用 IPFS 存储应用程序状态(作为 dApp 的后端)?

javascript - 生成与 IPFS-Desktop CID 匹配的 CID 的无节点方式