解决httpclient超时设置不生效的问题

2018/06/24 11:38
阅读数 2.7K

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。

初始设置如下:

 

[java] view plain copy

  1. //超时设置  
  2. RequestConfig requestConfig = RequestConfig.custom()  
  3.         .setConnectTimeout(400).setSocketTimeout(400).build();  
  4.   
  5. request.setEntity(s);  
  6. request.setConfig(requestConfig);  
  7.   
  8. HttpClient client = new HttpClient();  
  9. HttpResponse httpResponse = client.execute(request);  

 

发现设置并未生效,后发现是由于没有设置重试选项,将代码修改如下:

 

[java] view plain copy

  1.    private HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {  
  2.     @Override  
  3.     public boolean retryRequest(IOException exception,  
  4.             int executionCount, HttpContext context) {  
  5.         return false;  
  6.     }};  
  7.   
  8. //超时设置  
  9. RequestConfig requestConfig = RequestConfig.custom()  
  10.         .setConnectTimeout(connectTImeoutInMills).setSocketTimeout(socketTImeoutInMills).build();  
  11.   
  12. request.setEntity(s);  
  13. request.setConfig(requestConfig);  
  14.   
  15. HttpClient client = HttpClients.custom().setRetryHandler(myRetryHandler).build();  
  16. HttpResponse httpResponse = client.execute(request);  

 

超时设置即生效。

 

 

备注:

httpclient版本为4.5。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
3 收藏
0
分享
返回顶部
顶部