I was going through this post in stack exchange How can I code a Bitcoin JSON-RPC “getwork” request in Java?
I tried to write a simple snippet for just the getwork json rpc.
public static void main(String[] args) throws Exception { String request = "{\"method\": \"getwork\", \"params\": [], \"id\":0}"; URL url = new URL("https://de01.supportxmr.com:7777"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); if (conn .getConnectTimeout() == 0) conn.setConnectTimeout(1000); if (conn.getReadTimeout() == 0) conn.setReadTimeout(1000); conn.setRequestMethod("POST"); String encoded = Base64.getEncoder().encodeToString(("<my_wallet_addr>:x").getBytes(StandardCharsets.UTF_8)); //Java 8 conn.setRequestProperty("Authorization", "Basic "+encoded); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Content-Length", Integer.toString(request.getBytes().length)); conn.setRequestProperty("X-Mining-Extensions", "midstate"); conn.setAllowUserInteraction(false); conn.setUseCaches(false); conn.setDoOutput(true); DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(request); wr.close(); InputStream is = conn.getInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len; byte[] buffer = new byte[4096]; while ((len = is.read(buffer)) != -1) { bos.write(buffer, 0, len); } String content = bos.toString(); is.close(); System.out.println(content); }
when I run this code, I get an error
Exception in thread "main" java.net.SocketException: Unexpected end of file from server at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:792) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:789) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1536) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) at org.litecoinpool.miner.Test.main(Test.java:42)
What am I missing here? Is stratum proxy necessary to be running on the machine? If so how do I specify the parameters to run in the java code?