Bitcoind JSON-RPC: клиент Java Jersey: неожиданный конец файла с сервера Ошибка

Я новичок в биткойнах, и это мой первый эксперимент с биткойнами.

Мы пытались разработать приложение на основе Java на BTC, используя биткойн (используя тестовую сеть). Мы используем простой HTTP Post, используя клиент Jersey с базовой аутентификацией, как показано ниже. У нас уже есть клиент 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

Также я попытался интегрироваться с bitcoind с помощью клиента json-rpc, что привело к той же ошибке.

Очень признателен за любую помощь в разрешении этой ошибки. Заранее спасибо. Дайте мне знать, если вам понадобится дополнительная информация.

С уважением, Манджунатх

====== РЕДАКТИРОВАТЬ ======

Когда я проверяю запрос и ответ, он выдает ошибку «Удаленный сервер закрыл соединение перед отправкой заголовка ответа» как часть сценария сбоя HTTP. Ниже приводится содержание данных запроса:

URL: http://192.168.2.111:18333/

Данные запроса:

{"метод": "getblockcount", "params": [], "id": "1"}

Пожалуйста, помогите мне понять, в чем ошибка.

================ РЕДАКТИРОВАТЬ =================

В bitcoin.conf добавлены записи для разрешения подключений от клиента. Но все еще сталкивается с той же ошибкой:

rpcallowip=192.168.2.111
rpcallowip=127.0.0.1

С уважением, Манджунатх


person Manjunath    schedule 08.09.2014    source источник


Ответы (1)


После всех настроек я смог заставить его работать должным образом. Для удобства других вот Java-код для выполнения JSON-RPC вызовов bitcoind (с использованием клиента Jersey):

Записи 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

Убедитесь, что вы изменили номер порта и не забыли предоставить запись rpcallowip, указывающую на соответствующий IP-адрес.

Код клиента:

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);

Вот и все. Вам хорошо начать с интеграции биткойнов.

С уважением, Манджунатх

person Manjunath    schedule 09.09.2014