HttpClient4.3 超时时间设置
2015-04-11 17:22
459 查看
背景
采用线程池实现了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版本都去掉了,在请求时指定超时时间。
相关文章推荐
- Javascript (Ajax)给XMLHttpRequest设置超时时间
- 设置DefaultHttpClient和HttpClient的超时时间的方法
- 关于http socket timeout 超时时间 未设置 导致线程一直在等待(线程饥饿),微信公众号开发过程遇到的。java
- http 请求 超时时间设置
- HttpClient 4.5版本设置连接超时时间
- 给XMLHttpRequest设置超时时间
- 给XMLHttpRequest设置超时时间
- 为ServerXMLHTTP对象的HTTP请求设置超时时间
- 为ServerXMLHTTP对象的HTTP请求设置超时时间
- 关于http socket timeout 超时时间 未设置 导致线程一直在等待(线程饥饿),微信公众号开发过程遇到的。java
- XMLHttpRequest设置超时时间
- 使用HttpURLConnection设置请求超时时间,请求超时时会导致自动重发。
- python http,或者soap设置超时时间
- 给XMLHttpRequest设置超时时间
- 为ServerXMLHTTP对象的HTTP请求设置超时时间
- httpclient4 请一定设置超时时间
- android HttpUrlConnection 设置超时无效,等待时间很长的问题
- HttpClient 4.5版本设置连接超时时间
- HttpClient 4.5版本设置连接超时时间
- 给XMLHttpRequest设置超时时间