轉載地址: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