即时通讯使用dropwizard。从资源我尝试通过Jersey HttpClient使用比特币rpc。
使用curl就像魅力一样: $ curl --user user:password -X POST -d'{“jsonrpc”:“1.0”,“id”:“curltest”,“method”:“getinfo”,“params”: []}'-H'content-type:text / plain;' http://domain.name:18332/
但是某种方式从资源中使用Jersey HTTP客户端不起作用:
//init in run methode
final Client client = new JerseyClientBuilder(e).using(c.getJerseyClientConfiguration()).build(getName());
HTTPBasicAuthFilter httpBasicAuth = new HTTPBasicAuthFilter("user", "password");
client.addFilter(httpBasicAuth);
//From the resource
WebResource webRes = client.resource("http://domain.name:18332/");
webRes.header("content-type", "text/plain");
RPC_REQUEST rpc = new RPC_REQUEST("1.0", "curltest", "getinfo", new ArrayList<String>());
String response = webRes.post(String.class, JSONParserHelper.parseJSONToString(rpc));
JSONParserHelper.parseJSONToString(rpc)返回以下字符串:
{"jsonrpc":"1.0","id":"curltest","method":"getinfo","params":[]}
以下错误是在“webRes.post”行中引起的:
! com.sun.jersey.api.client.UniformInterfaceException: Client response status: 500
编辑:使用错误的pw导致401.我猜连接应该是正确的,问题出在其他地方。
编辑:使用-d而不是--data-binary
编辑:一旦我回家,我就会从jersey http客户端转发整个请求。
谢谢
答案 0 :(得分:0)
比特币RPC不支持分块编码请求。 由于Dropbox jersey libs中有一个bug直到0.8,你无法禁用它。
从0.8开始,您可以在配置文件中禁用它。 我必须从0.7迁移到0.8并将其添加到我的配置文件中。
HttpClient的: ... chunkedEncodingEnabled:false
顺便提一下好的迁移概述:https://groups.google.com/forum/#!topic/dropwizard-dev/VInOW_ebiAc