热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HttpClient4.3超时时间设置

背景采用线程池实现了HttpClient,为了避免每次请求都去创建一个新的线程池,我采用了单例的方式初始化了一个CloseableHttpClient,配置了超时时间,后来由于需求调整

背景

采用线程池实现了HttpClient,为了避免每次请求都去创建一个新的线程池,我采用了单例的方式初始化了一个CloseableHttpClient,配置了超时时间,后来由于需求调整,需要部分请求配置更少的超时时间,最开始采用了笨办法解决,根据不同的超时时间建立不同的HttpClient。但是这样随着不同超时时间增加,httpclient版本越来越多,不利于代码维护。

RequestConfig defaultRequestCOnfig= RequestConfig.custom()
.setSocketTimeout(5000)
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.setStaleConnectionCheckEnabled(true)
.build();
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultRequestConfig(defaultRequestConfig)
.build();

超时时间优先级

如果不为Request设置RequestConfig,那么请求将会继承客户端配置。否则Request不会继承客户端级别的请求配置,因此可以自定义为每个请求自定义超时时间。如下

RequestConfig requestCOnfig= RequestConfig.custom()
.setSocketTimeout(3000)
.setConnectTimeout(3000)
.setConnectionRequestTimeout(3000)
.setStaleConnectionCheckEnabled(true)
.build();
HttpGet httpget = new HttpGet("http://www.apache.org/");
RequestConfig requestCOnfig= RequestConfig.copy(requestConfig)
.build();
httpget.setConfig(requestConfig);

这样就可以把不同版本的httpClient版本都去掉了,在请求时指定超时时间。


推荐阅读
author-avatar
lucky2502882647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有