首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有定义的超时的Java HTTP客户端请求

具有定义的超时的Java HTTP客户端请求
EN

Stack Overflow用户
提问于 2010-06-09 02:36:32
回答 7查看 286.6K关注 0票数 97

我想在我的云中对一些服务器进行BIT (内置测试)。我需要请求在超时过大时失败。

我应该如何在java中做到这一点呢?

尝试下面这样的方法似乎不起作用。

public class TestNodeAliveness {
 public static NodeStatus nodeBIT(String elasticIP) throws ClientProtocolException, IOException {
  HttpClient client = new DefaultHttpClient();
  client.getParams().setIntParameter("http.connection.timeout", 1);

  HttpUriRequest request = new HttpGet("http://192.168.20.43");
  HttpResponse response = client.execute(request);

  System.out.println(response.toString());
  return null;
 }


 public static void main(String[] args) throws ClientProtocolException, IOException {
  nodeBIT("");
 }
}

-- EDIT:澄清正在使用的库--

我使用的是来自apache的httpclient,下面是相关的pom.xml部分

 <dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.0.1</version>
   <type>jar</type>
 </dependency>
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-09 09:24:31

import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

...

    // set the connection timeout value to 30 seconds (30000 milliseconds)
    final HttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
    client = new DefaultHttpClient(httpParams);
票数 121
EN

Stack Overflow用户

发布于 2013-10-03 15:29:47

如果您使用的是Http客户端4.3版及更高版本,则应使用以下内容:

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
票数 133
EN

Stack Overflow用户

发布于 2014-06-16 20:53:06

在新的Apache HTTPClient库中,不推荐使用HttpParams。使用Laz提供的代码会导致弃用警告。

我建议在您的HttpGet或HttpPost实例上使用RequestConfig:

final RequestConfig params = RequestConfig.custom().setConnectTimeout(3000).setSocketTimeout(3000).build();
httpPost.setConfig(params);
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3000214

复制
相关文章

相似问题

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