HttpClient 4.3超時設置

最近用到了HttpClient寫爬蟲,可能我有新版本強迫症,總是喜歡用新版本的東西(雖然說新版本不必定好用),而後就用了HttpClient 4.3。HttpClient這貨和Lucene同樣,每一個版本的API都變化很大,這有點讓人頭疼。就比如建立一個HttpClient對象吧,每個版本的都不同, java

3.X是這樣的 服務器

HttpClient httpClient=new DefaultHttpClient();
4.3是這樣的
CloseableHttpClient httpClient = HttpClients.createDefault();
固然,上面這些變化只不過是一些小變化,你們看看API你們就都會了。

我要講的是超時設置,HttpClient有三種超時設置,最近比較忙,沒時間具體概括總結,之後再補上,我這裏就講一些最簡單最易用的超時設置方法。 ui

這是個3.X的超時設置方法 code

HttpClient client = new HttpClient();
client.setConnectionTimeout(30000);  
client.setTimeout(30000);
HttpClient httpClient= new HttpClient();  
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
4.X版本的超時設置(4.3後已過期)
HttpClient httpClient=new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//鏈接時間
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//數據傳輸時間
4.3版本超時設置
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet=new HttpGet("http://www.baidu.com");//HTTP Get請求(POST雷同)
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//設置請求和傳輸超時時間
httpGet.setConfig(requestConfig);
httpClient.execute(httpGet);//執行請求
BTW,4.3版本不設置超時的話,一旦服務器沒有響應,等待時間N久(>24小時)。
相關文章
相關標籤/搜索