我想在我的云中对一些服务器进行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>
发布于 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);
发布于 2013-10-03 15:29:47
如果您使用的是Http客户端4.3版及更高版本,则应使用以下内容:
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
发布于 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);
https://stackoverflow.com/questions/3000214
复制相似问题