Приложение Java: проблема с подключением к частной биткойн-ноде

Вот контекст, java-проект, запущенный в eclipse на моем хосте. Virtual Box установлен на этом хосте и запускает виртуальную машину, которая является частным биткойн-узлом.

Java-приложение пытается подключиться к биткойн-узлу, используя такие параметры, как:

порт = 18444 ip = .. ***. 58 rpcuser = bitcoinrpc rpcpassword = MotDePasse blockchain = bitcoin chainname = regtest

Если я попытаюсь подключиться по telnet с моего хоста к IP-адресу узла биткойнов на порту 184444, он сработает.

Команда netstat на биткойн-узле дает следующее:

Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние PID / Имя программы
tcp 0 0 127.0.0.1:18443 0.0.0.0:* LISTEN 1154 / bitcoind
tcp 0 0 0.0.0.0:18444 0.0.0.0 : * СЛУШАТЬ 1154 / bitcoind
tcp 0 0 127.0.0.53:53 0.0.0.0:* СЛУШАТЬ -
tcp 0 0 0.0.0.0:22 0.0.0.0:* СЛУШАТЬ -
tcp 0 576 .. .: 22 .. .: 38772 УСТАНОВЛЕНО -
tcp6 0 0 :: 1: 18443: :: * СЛУШАТЬ 1154 / bitcoind
tcp6 0 0 ::: 18444 ::: * СЛУШАТЬ 1154 / bitcoind
tcp6 0 0 ::: 22 ::: * СЛУШАТЬ -

Ошибка Java из консоли:

eb 27, 2019 16:58:40 org.apache.http.impl.client.DefaultRequestDirector выполнить INFO: повторная попытка запроса Целевой сервер не ответил org.apache.http.NoHttpResponseException: целевой сервер не ответил

Любая идея ??

Спасибо


person Thierry Grandjean    schedule 28.02.2019    source источник


Ответы (1)


Что касается информации, которую вы предоставляете в 1-м и 2-м сообщениях, я постараюсь предоставить вам некоторую техническую информацию, которая, я надеюсь, поможет вам найти проблему для этого устранения неполадок.

Сначала вы используете протокол RPC (удаленный вызов процедур)

Техническое представление RPC

Этот протокол предоставляет механизм, который позволяет клиенту (например, программе) запрашивать сервер для выполнения определенной процедуры, которая предоставляется ему параметрами, отправленными клиентом.

RPC - это протокол запроса-ответа.

введите описание изображения здесь

Поскольку вы пытаетесь аутентифицироваться, вы должны знать:

Для аутентификации клиент-сервер RPC определяет аутентификацию только сам по себе, а не управление доступом к службе. Каждая служба должна реализовывать свою собственную политику доступа. Существует другая форма аутентификации, которая может быть связана с клиентами RPC.

Вызов удаленного метода Java (Java RMI) - это API, который предоставляет некоторые полезные методы и реализацию для протокола RPC.

Проверьте полное руководство ЗДЕСЬ

В заключение:

Ваша проблема в том, что вы пытаетесь взаимодействовать с протоколом RPC, используя протокол Http, который не предоставляет те же процедуры реализации. Поскольку Telnet поддерживает связь по протоколу RPC, вы получите ожидаемые ответы.

Вы должны реализовать некоторые классы в своем коде с обеих сторон для поддержки связи RPC.

person s4r4z1n    schedule 01.03.2019
comment
Привет, последнее обновление, теперь я получаю следующую ошибку: сервер JSONRPC обрабатывает только запросы POST - person Thierry Grandjean; 16.12.2019
comment
Используйте wirehark или прокси, чтобы узнать, какой запрос вы отправляете. И еще раз проверьте, этого ли ожидают с другой стороны. Предоставьте дополнительную информацию для получения дополнительной помощи. - person s4r4z1n; 31.12.2019