0
我目前正在使用Apache HttpClient 4.1.2的項目,它從網站檢索一些數據。Java Apache HttpClient EnityUtils塊
應用程序的功能:進入網頁,然後進入下一個(找到的)頁面,直到到達最後(例如:轉到第1頁 - >找到20個頁面 - >轉到下一個20頁)。問題在於它在檢索一些隨機頁面時停滯不前,並且不會繼續爬網。
下面是一些代碼:
DefaultHttpClient mainHttp;
HttpPost post;
HttpResponse response;
HttpEntity entity;
String s;
int curPage = 1;
int index = 0;
boolean ok = true;
...
while (ok) {
response = mainHttp.execute(post);
entity = response.getEntity();
if (entity != null) {
System.out.println("Enter " + curPage);
s = EntityUtils.toString(entity);
System.out.println("Exit " + curPage);
index = s.indexOf("[" + curPage + "]");
if (index > 0) {
parseContent();
} else {
ok = false;
}
}
}
在調試窗口時顯示是這樣的:
Enter 1
Exit 1
.
.
.
Enter n
我也使用一個HTTP請求分析器和我看到的頁面stucks上,數據不會完全檢索(它不會到達</html>
或頁面末尾)。
在這種情況下,如何跳過或重試下載數據?誰能幫我?
謝謝!
LE:
實際設置爲:
mainHttp.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(1, true));
mainHttp.getParams().setParameter("http.connection-manager.timeout", 15000);
mainHttp.getParams().setParameter("http.socket.timeout", 15000);
mainHttp.getParams().setParameter("http.connection.timeout", 15000);
其中15000
爲以毫秒爲單位的超時時間。
謝謝你的幫助。
都能跟得上時間的IOExceptions任何異常。依然沒有。我也有一個暫停,並沒有任何反應。 :( –
但是你真的確定你從服務器得到了每一頁的響應嗎? – 2011-11-23 21:59:10
是的,我100%確定。它下載n-1頁並在第n頁上查找xx%。 –