Используйте Infura для запуска узла IPFS в Java Android - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь подключиться к узлу Infura из приложения Java Android. Я следил за этими документами, чтобы подключиться к узлу 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

Любые предложения, пожалуйста.

1 Ответ

0 голосов
/ 24 апреля 2020

Я не понимаю, почему возникает такая ошибка, но когда я использовал простой класс java для подключения к ней. Возможно, вы можете сослаться здесь на мой репозиторий blockchain с 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);
        }
    }

}
...