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

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

初始设置以下:web

 

[java] view plain copyapp

  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);  

 

发现设置并未生效,后发现是因为没有设置重试选项,将代码修改以下:socket

 

[java] view plain copyide

  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);  

 

超时设置即生效。ui

 

 

备注:spa

httpclient版本为4.5。.net

相关文章
相关标签/搜索