json jersey bitcoin json-rpc bitcoind

Bitcoind JSON-RPC: Java Jersey Client: fin de archivo inesperado del servidor Error



(1)

Después de todos los ajustes, puedo hacerlo funcionar correctamente. Para beneficio de otros, aquí está el código de Java para hacer llamadas JSON-RPC a bitcoind (utilizando Jersey Client):

entradas de 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

Asegúrese de cambiar el número de puerto y no olvide proporcionar la entrada rpcallowip apuntando a la dirección IP respectiva.

Codigo del cliente:

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

Eso es. Es bueno comenzar con la integración bitcoind.

Saludos, Manjunath

Soy muy nuevo en Bitcoin y este es mi primer experimento con Bitcoind.

Hemos estado tratando de desarrollar una aplicación basada en Java en BTC usando bitcoind (usando testnet). Estamos utilizando una simple publicación de HTTP utilizando el cliente de Jersey con autenticación básica como se indica a continuación. Ya tenemos un cliente de jersey como parte de las dependencias del proyecto. Estamos corriendo en Mac OS. El bitcoind y el cliente java están alojados en el mismo sistema.

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

Cuando ejecutamos esto, estamos obteniendo

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)

A partir de la excepción, lo que entiendo es que hay algunos errores en el lado del servidor, pero no puedo ver los errores en los archivos de registro. El degug.log no proporciona ningún detalle.

Las entradas en el archivo bitcoin.conf son las siguientes:

rpcuser=bitcoinrpc rpcpassword=5UKQTzWTf7EEJnkShZhr9tbjpDVNmLMgQkFfWsnZhLey testnet=1 server=1

También traté de integrar Bitcoind usando el cliente json-rpc, lo que resultó en el mismo error.

Realmente agradezco cualquier ayuda para resolver este error. Gracias de antemano. Avíseme si necesita más detalles.

Saludos, Manjunath

====== EDITAR ======

Cuando inspecciono la solicitud y la respuesta, aparece el error "El servidor remoto cerró la conexión antes de enviar el encabezado de respuesta" como parte del escenario de falla HTTP. A continuación está el contenido de datos de solicitud:

URL: http://192.168.2.111:18333/

Datos de solicitud:

{"método": "getblockcount", "params": [], "id": "1"}

Por favor, ayúdame a entender dónde está el error.

================ EDITAR =================

Se agregaron las entradas siguientes a bitcoin.conf para permitir las conexiones desde el cliente. Pero aún enfrenta el mismo error:

rpcallowip=192.168.2.111 rpcallowip=127.0.0.1

Saludos, Manjunath