1

私はビットコインに非常に慣れておらず、これがビットコインの最初の実験です。

bitcoind (testnet を使用) を使用して、BTC で Java ベースのアプリケーションを開発しようとしています。以下に示すような基本認証でJerseyクライアントを使用して、単純なHTTP Postを使用しています。プロジェクトの依存関係の一部として、すでに jersey クライアントがあります。私たちはMac OSで実行しています。bitcoind と Java クライアントは同じシステムでホストされています。

Client client = Client.create();

String url = "http://"+username+':'+password+"@localhost:18333";
//String url = "http://localhost:18333";
System.out.println("URL is : "+url);
WebResource webResource = client.resource(url);

Authenticator.setDefault(new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
   return new PasswordAuthentication (username, password.toCharArray());
    }
    });

String input = "{\"method\":\"getblockcount\",\"params\":[],\"id\":\"1\"}";
ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input);

これを実行すると、次のようになります

Caused by: java.net.SocketException: Unexpected end of file from server
   at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:772)
   at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
   at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)

私が理解している例外から、サーバー側のエラーがいくつかありますが、ログファイルにエラーが表示されません。degug.log には詳細が記載されていません。

bitcoin.conf ファイルのエントリは次のとおりです。

rpcuser=bitcoinrpc
rpcpassword=5UKQTzWTf7EEJnkShZhr9tbjpDVNmLMgQkFfWsnZhLey
testnet=1
server=1

また、json-rpc クライアントを使用して bitcoind と統合しようとしたところ、同じエラーが発生しました。

このエラーを解決するための助けを本当に感謝します. 前もって感謝します。さらに詳細が必要な場合はお知らせください。

よろしく、 マンジュナート

======編集======

リクエストとレスポンスを調べると、HTTP 障害シナリオの一部として「リモート サーバーがレスポンス ヘッダーを送信する前に接続を閉じました」というエラーが表示されます。リクエスト データの内容は次のとおりです。

URL :http://192.168.2.111:18333/

リクエストデータ:

{ "メソッド": "getblockcount", "params": [], "id": "1" }

間違いがどこにあるかを理解するのを手伝ってください。

================編集=================

クライアントからの接続を許可するために、以下のエントリを bitcoin.conf に追加しました。しかし、まだ同じエラーに直面しています:

rpcallowip=192.168.2.111
rpcallowip=127.0.0.1

よろしく、 マンジュナート

4

1 に答える 1

-1

すべての微調整の後、私はそれを適切に機能させることができます。他の人のために、bitcoind への JSON-RPC 呼び出しを行うための Java コードを次に示します (Jersey Client を使用):

bitcoin.conf エントリ:

rpcuser=bitcoinrpc
rpcpassword=5UKQTzWTf7EEJnkShZhr9tbjpDVNmLMgQkFfWsnZhLey    
testnet=1
server=1
#txindex=1
rpcallowip=192.168.2.*
rpcallowip=127.0.0.1
rpcport=8999
#rpctimeout=60000

ポート番号を必ず変更し、それぞれの IP アドレスを指す rpcallowip エントリを提供することを忘れないでください。

クライアントコード:

DefaultClientConfig config = new DefaultClientConfig();

config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
            Boolean.TRUE);
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(username, password));
WebResource webResource = client.resource(url);
String input = "{\"id\":\"jsonrpc\",\"method\":\"listaccounts\",\"params\":[]}";
ClientResponse response = webResource.accept("application/json").type("application/json")
           .post(ClientResponse.class, input);

それでおしまい。ビットコインの統合から始めるのは良いことです.

よろしく、 マンジュナート

于 2014-09-09T10:29:17.783 に答える