HttpClient 版本變化 轉載

轉載地址:http://my.oschina.net/u/577453/blog/173724服務器

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

3.X是這樣的spa

HttpClient httpClient=new DefaultHttpClient();

4.3是這樣的.net

CloseableHttpClient httpClient = HttpClients.createDefault();

固然,上面這些變化只不過是一些小變化,你們看看API你們就都會了。code

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

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

HttpClient client = new HttpClient();
client.setConnectionTimeout(30000);  
client.setTimeout(30000);
HttpClient httpClient= new HttpClient();  
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

4.X版本的超時設置(4.3後已過期)get

HttpClient httpClient=new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//鏈接時間
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//數據傳輸時間

4.3版本超時設置io

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小時)。class

相關文章
相關標籤/搜索