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

相关文章
相关标签/搜索