缘起

本人此前写过一篇关于HttpClient设置超时时间的文章,那个时候我还是一个小白(蜜汁笑容)。而今在项目中要使用httpclient设置超时时间时发现以前写的那个方法早已过时。HttpClient4.3版本有了新的设置方法,在此做个记录,以备查阅。

不同版本的HttpClient设置方法

HttpClient版本不同,设置方法也不尽相同,一般而言有一下几种设置

1、我4.3版本设置的时候报错,可能是版本问题

httpClient.setConnectionTimeout(30000);
httpClient.setTimeout(30000);

2、我4.3版本设置的时候也报错,可能是版本问题

HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams()
		.setConnectionTimeout(3000);               
		client.getHttpConnectionManager().getParams()
		.setSoTimeout(3000);

3、我4.3版本设置的时候提示已过期,这个应该是老版本用的

httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);

4、4.3版本版本设置正常

HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(20000).build();
httpPost.setConfig(requestConfig);
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(20000).build();
httpPost.setConfig(requestConfig);

我这里把链接超时时间设置为20s,读取超时时间设置为30s.下面来看效果
HttpClient 4.3.x版本设置超时时间_不同版本
从报错日志可以看出设置是生效了的。