首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache HttpComponents HttpClient超时

Apache HttpComponents HttpClient超时
EN

Stack Overflow用户
提问于 2011-05-17 07:02:54
回答 5查看 64.8K关注 0票数 46

如何在httpcomponent httpclient中设置连接超时?我在:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html上找到了文档,但不清楚这些参数实际上是如何设置的。

此外,解释一下SO_TIMEOUTCONNECTION_TIMEOUT之间的区别也会有所帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-07 21:13:00

在Apache Http客户端4.3版中,配置(再次)进行了重构。新的方式看起来像这样:

代码语言:javascript
复制
RequestConfig.Builder requestBuilder = RequestConfig.custom();
requestBuilder.setConnectTimeout(timeout);
requestBuilder.setConnectionRequestTimeout(timeout);

HttpClientBuilder builder = HttpClientBuilder.create();     
builder.setDefaultRequestConfig(requestBuilder.build());
HttpClient client = builder.build();
票数 107
EN

Stack Overflow用户

发布于 2014-08-19 17:37:32

在HttpClient 4.3版本中,您可以使用以下示例。让我们说5秒钟

代码语言:javascript
复制
int timeout = 5;
RequestConfig config = RequestConfig.custom()
  .setConnectTimeout(timeout * 1000)
  .setConnectionRequestTimeout(timeout * 1000)
  .setSocketTimeout(timeout * 1000).build();
CloseableHttpClient client = 
  HttpClientBuilder.create().setDefaultRequestConfig(config).build();
HttpGet request = new HttpGet("http://localhost:8080/service"); // GET Request
response = client.execute(request);
票数 13
EN

Stack Overflow用户

发布于 2013-01-25 04:34:48

来自@jontro的答案是正确的,但有一个关于如何做到这一点的代码片段总是很好的。有两种方法可以完成此操作:

版本1:为以下每个参数设置10秒超时:

代码语言:javascript
复制
HttpClient httpclient = new DefaultHttpClient();
// this one causes a timeout if a connection is established but there is 
// no response within 10 seconds
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10 * 1000);

// this one causes a timeout if no connection is established within 10 seconds
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10 * 1000);

// now do the execute:
HttpGet httpget = new HttpGet(URL);
HttpResponse response = httpclient.execute(httpget);

版本2:还为以下每个参数设置了10秒超时:

代码语言:javascript
复制
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 10 * 1000);
HttpConnectionParams.setSoTimeout(params, 10 * 1000);

HttpClient httpclient = new DefaultHttpClient(params);
HttpGet httpget = new HttpGet(URL);
HttpResponse response = httpclient.execute(httpget);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6024376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档