0
I am using Ubuntu Server 12.04. My *.conf file:
...
# Enable RPC
server=1
# Uncomment to allow localhost to use RPC
rpcallowip=127.0.0.1
# RPC information
# THIS MUST BE CHANGED FOR YOUR SECURITY
rpcuser=username
rpcpassword=passssssssss_new
# Mining is initially disabled
# gen=0
...
Java RPCClient that I use:
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class RPCClient {
private static final String COMMAND_GET_BALANCE = "getbalance";
private static final String COMMAND_GET_INFO = "getinfo";
private static final String COMMAND_GET_NEW_ADDRESS = "getnewaddress";
private JSONObject invokeRPC(String id, String method, List<String> params) {
// CloseableHttpClient httpclient = HttpClientBuilder.create().build();
//
// httpclient.getCredentialsProvider();
DefaultHttpClient httpclient = new DefaultHttpClient();
JSONObject json = new JSONObject();
json.put("id", id);
json.put("method", method);
if (null != params) {
JSONArray array = new JSONArray();
array.addAll(params);
json.put("params", params);
}
JSONObject responseJsonObj = null;
try {
httpclient.getCredentialsProvider().setCredentials(new AuthScope("198.154.*.*", 34907),
new UsernamePasswordCredentials("username", "passssssssss_new"));
StringEntity myEntity = new StringEntity(json.toJSONString());
System.out.println(json.toString());
HttpPost httppost = new HttpPost("http://198.154.*.*:34907");
httppost.setEntity(myEntity);
System.out.println("executing request" + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
// System.out.println(EntityUtils.toString(entity));
}
JSONParser parser = new JSONParser();
responseJsonObj = (JSONObject) parser.parse(EntityUtils.toString(entity));
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (org.json.simple.parser.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
return responseJsonObj;
}
public Double getBalance(String account) {
String[] params = { account };
JSONObject json = invokeRPC(UUID.randomUUID().toString(), COMMAND_GET_BALANCE, Arrays.asList(params));
return (Double)json.get("result");
}
public String getNewAddress(String account) {
String[] params = { account };
JSONObject json = invokeRPC(UUID.randomUUID().toString(), COMMAND_GET_NEW_ADDRESS, Arrays.asList(params));
return (String)json.get("result");
}
public JSONObject getInfo() {
JSONObject json = invokeRPC(UUID.randomUUID().toString(), COMMAND_GET_INFO, null);
return (JSONObject)json.get("result");
}
public JSONObject getInfo(String command) {
JSONObject json = invokeRPC(UUID.randomUUID().toString(), command, null);
return (JSONObject)json.get("result");
}
/*public static void main(String[] args) {
System.out.println(new RPCClient().getInfo());
}*/
}
Current result:
{"id":"60f910c6-a893-4753-a9d3-cbe6973ccb14","method":"getinfo"}
executing requestPOST http://198.154.*.*:34907 HTTP/1.1
----------------------------------------
HTTP/1.1 403 Forbidden
Response content length: 0
Unexpected token END OF FILE at position 0.
at org.json.simple.parser.JSONParser.parse(JSONParser.java:257)
at org.json.simple.parser.JSONParser.parse(JSONParser.java:81)
at org.json.simple.parser.JSONParser.parse(JSONParser.java:75)
at RPCClient.invokeRPC(RPCClient.java:61)
at RPCClient.getInfo(RPCClient.java:96)
at KeccakTest.main(KeccakTest.java:125)
Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
at KeccakTest.main(KeccakTest.java:129)
Caused by: java.lang.NullPointerException
at RPCClient.getInfo(RPCClient.java:97)
at KeccakTest.main(KeccakTest.java:125)
1
I see a POST call on http://198.154.*.*:34907, what is this? If you try to access bitcoind from another host you should set
– George Kimionis – 2014-04-30T00:57:21.027rpcallowip=THE_OTHER_HOSTS_IP(or an IP-mask to allow access to the whole subnet, orrpcallowip=*to allow all IPs). Also, the standard port for the main network is 8332 and 18332 for testnet.@George Kimionis, "198.154.xxx.xxx" is ip of the server, 34907 - port for JSON-RPC connections. – Vitali Grabovski – 2014-04-30T08:45:27.597
OK so did you try setting
rpcallowip=*? Please add the configuration you are using inside theRPCClient.javafile to your question. – George Kimionis – 2014-04-30T12:16:28.7571@George Kimionis, thanks! "rpcallowip=*" was helpful. – Vitali Grabovski – 2014-05-01T11:24:58.770