![](/img/trans.png)
[英]Sending data stream to multiple URLs using org.apache.commons.httpclient.HttpClient
[英]org.apache.commons.httpclient.HttpClient stuck on request
我有該代碼:
while(!lastPage && currentPage < maxPageSize){
StringBuilder request = new StringBuilder("http://catalog.bizrate.com/services/catalog/v1/us/" + " some more ...");
currentPage++;
HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
client.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
GetMethod get = new GetMethod(request.toString());
HostConfiguration configuration = new HostConfiguration();
int iGetResultCode = client.executeMethod(configuration, get);
if (iGetResultCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + get.getStatusLine());
return;
}
XMLStreamReader reader
= XMLInputFactory.newInstance().createXMLStreamReader(get.getResponseBodyAsStream());
while (reader.hasNext()) {
int type = reader.next();
// some more xml parsing ...
}
reader.close();
get.releaseConnection();
}
不知何故,代碼不時在線上:執行請求。
我找不到請求超時(而不是連接超時)的配置,也許有人可以幫助我,還是我在做一些根本錯誤的事情?
我正在使用的客戶端 。
您也可以使用setSoTimeout()
設置套接字讀取timeou,但這也不保證。
唯一的解決方案是在另一個線程中運行請求,並在超時后中斷該線程。 您可以使用FutureTask來執行此操作。 有關示例,請參見我對這個問題的回答,
PoolingConnectionManager
維護每個路由的總連接數上限。 默認情況下,此實現將為每個給定路由創建不超過2個並發連接,並且總共不超過20個連接。 對於許多現實應用程序,這些限制可能證明過於嚴格,特別是如果它們使用HTTP作為其服務的傳輸協議。 但是,可以使用HTTP參數來調整連接限制。 有關更多信息,您可以參考PoolingClientConnectionManager
Java API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.