httpclient几个版本的唠嗑

说到这个httpClient,由于更新的时候变化还老多,每个版本总有那么几个不适应,而且还有两个大版本的区别,反正呢,用起来也是千奇百怪,各种项目中的各个版本纷乱纷乱:

httpclient几个版本的唠嗑_第1张图片

先看这个图,在maven仓库上找的,commons-httpclient是一个遗留版本,现在官方已经不推荐使用了,不再被开发。它已取代由Apache HttpComponents项目HttpClient和的HttpCore模组,提供更好的性能和更大的灵活性。但是呢HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼。就好比创建一个HttpClient对象吧,每一个版本的都不一样,

3.X是这样的

HttpClient httpClient=new DefaultHttpClient();

4.3是这样的

CloseableHttpClient httpClient = HttpClients.createDefault();

当然,上面这些变化只不过是一些小变化,大家看看API大家就都会了。

我要讲的是超时设置,HttpClient有三种超时设置,最近比较忙,没时间具体归纳总结,以后再补上,我这里就讲一些最简单最易用的超时设置方法。

这是个3.X的超时设置方法

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);//执行请求

4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时)。

总之,版本造成代码的差异性还是蛮大的,一个大项目不同team之间写的httpclient也是千差万别,混乱不堪。。。

你可能感兴趣的:(Http/HttpClient)