1

dzhuvinovの JSON-RPC 2.0 用の Java ライブラリを使用しています。通話の基本アクセス認証用のユーザー名とパスワードの設定に問題があります。私のコードは次のようになります:

public static void main(String[] args)
{
    URL serverURL = null;
    try {
        serverURL = new URL("http://user:pass@127.0.0.1:18332/");

    } catch (MalformedURLException e) {
        System.err.println(e.getMessage());
        return;
    }
     JSONRPC2Session mySession = new JSONRPC2Session(serverURL);
     String method = "getinfo";
     int requestID = 0;
     JSONRPC2Request request = new JSONRPC2Request(method, requestID);
     JSONRPC2Response response = null;
     try {
             response = mySession.send(request);

     } catch (JSONRPC2SessionException e) {
             System.err.println(e.getMessage());
             return;
     }
     if (response.indicatesSuccess())
        System.out.println(response.getResult());
    else
        System.out.println(response.getError().getMessage());
}

そして、私は次の応答を受け取ります:

Network exception: Server returned HTTP response code: 401 for URL: http://user:pass@127.0.0.1:18332/

Python で同様のコードを試すと、適切な結果が得られます。

access = jsonrpc.ServiceProxy("http://user:pass@127.0.0.1:18332/")
print access.getinfo()

JSON RPC 呼び出しの基本アクセス認証を構成するにはどうすればよいですか?

4

2 に答える 2

1
final String rpcuser ="...";
final String rpcpassword ="...";

Authenticator.setDefault(new Authenticator() {
  protected PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication (rpcuser, rpcpassword.toCharArray());
  }});
于 2013-04-26T06:03:36.157 に答える
1

「dzhuvinov」のライブラリがストリームをどのように処理するかわかりません。ただし、このコードを適用して、URLクラスによって開かれた HTTP トランスポート レベルで基本認証を実行できます。

URL url = new URL("http://user:pass@127.0.0.1:18332/");
URLConnection conn = url.openConnection();
String userpass = rpcuser + ":" + rpcpassword;
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
conn.setRequestProperty ("Authorization", basicAuth);
conn.setRequestProperty ("Content-Type", "application/json");
conn.setDoOutput(true);

完全なコードはhttp://engnick.blogspot.ru/2013/03/java-trac-rpc-and-json.htmlにあります。これを使用して JSON-RPC を実行し、 の API と通信しましたTrac

于 2013-04-26T06:46:54.790 に答える