最近用到了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小時)。