为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2019-12-21 11:02:22
我想对我的云中的许多服务器进行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(""); }}-编辑:澄清正在使用的库-我正在使用来自Apache的httpclient,这是相关的pom.xml部分 <dependency>   <groupId>org.apache.httpcomponents</groupId>   <artifactId>httpclient</artifactId>   <version>4.0.1</version>   <type>jar</type> </dependency>
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-12-21
?
慕沐林林

TA贡献2016条经验 获得超9个赞

看来您正在使用HttpClient API,对此我一无所知,但是您可以使用核心Java编写类似的内容。


try {


   HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();

   con.setRequestMethod("HEAD");

   con.setConnectTimeout(5000); //set timeout to 5 seconds

   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);


} catch (java.net.SocketTimeoutException e) {

   return false;

} catch (java.io.IOException e) {

   return false;

}


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信