我想使用java連接到bitcoind。我的計劃是使用htmlunit和gson。現在我可以成功完成一個請求。但是,由於在第五個請求中拋出了SocketTimeoutException,因此我無法完成多於四個後續請求。向本地bitcoind發出四個請求後發生SocketTimeoutException
我想:
- 請求之間等待。 (無效果可見)
- 強制失敗的http狀態碼例如通過請求
getinfoo
而不是getinfo
。 (我做不是得到四個失敗的請求後超時)
任何幫助或評論感激!
package test;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.google.gson.Gson;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.net.URL;
public class Test {
public static void main(String[] args) {
WebClient client = new WebClient(BrowserVersion.FIREFOX_24);
// http://[bitcoind-user]:[password]@localhost:[bitcoind-port]
String baseUrl = "http://admin:[email protected]:8332/";
client.getOptions().setTimeout(2000);
while (true) {
try {
WebRequest req = new WebRequest(new URL(baseUrl));
req.setAdditionalHeader("Content-type", "application/json");
req.setHttpMethod(HttpMethod.POST);
JSONRequestBody body = new JSONRequestBody();
body.setMethod("getinfo");
req.setRequestBody(new Gson().toJson(body, JSONRequestBody.class));
client.getPage(req);
client.closeAllWindows();
System.out.println("ok. (No Exception)");
} catch (SocketTimeoutException tex) {
System.out.println("not ok: SocketTimeoutException");
} catch (IOException ex) {
System.out.println("not ok: IOException");
} catch (FailingHttpStatusCodeException hex) {
System.out.println("not ok: FailingHttpStatusCodeException");
}
}
}
}
(編輯:)
卸下.setTimeout(2000)
沒有很好的幫助。測量每個請求的時間表明,他們是相當快:
ok. (No Exception) Timer: 1.161 seconds
ok. (No Exception) Timer: 0.112 seconds
ok. (No Exception) Timer: 0.115 seconds
ok. (No Exception) Timer: 0.075 seconds
not ok: SocketTimeoutException Timer: 90.119 seconds
not ok: SocketTimeoutException Timer: 90.145 seconds
not ok: SocketTimeoutException Timer: 90.134 seconds
使用curl
終端重複相同的請求多次,總是花了不到一秒鐘,這樣bitcoind
不應引起的問題。
至少在2.14版本中似乎有一個錯誤。我可以讓我的腳本在2.10和2.15上工作...... – user2084795