httpclient在做数据获取、发送请求必须设置超时机制,如果没有设置超时时间,如果后端服务发生了阻塞、延迟那么这个连接就会回收不及时,httpclient默认的超时时间为24小时。
这里主要介绍了httpclient是4.5.2
的版本设置方式,低于这个版本的配置方式就大不一样了。
httpclient提供了3中设置超时方式,分别是
- 从连接池获取连接超时(setConnectionRequestTimeout)。
- 从client到server发送请求超时(setConnectTimeout)。
- 从server获取数据超时(setSocketTimeout)
下面代码介绍了这三种超时的配置以及超时报错内容:
public class HttpClientPool {
public static CloseableHttpClient getHttpClient() {
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();