HttpClientBuilder无法正常工作

时间:2015-09-16 15:14:05

标签: java apache-httpclient-4.x

我的java应用程序中有一个代码,它连接到一个带有post请求的url并获得响应。 代码工作了很长时间,它仍然适用于大多数人。我有一个人,大部分时间代码都适用于他,但有时我会超时超时。

代码:

HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("http://example.com/link-to-api");

post.addHeader( "Data1", "my_data" );

HttpResponse response = null;
BufferedReader rd = null;

try {
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("post_key1","post_data1"));

    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    response = client.execute(post);
} catch (IOException e) {
    System.out.println("error: "+ e);
}

我得到的例外是:

 org.apache.http.conn.HttpHostConnectException: Connect to example.com:80 [example.com/__IP__] failed: Connection timed out: connect

我嗅到了网络,我可以在连接正常时看到数据包,但每隔几分钟,当我得到上述异常时,我甚至都看不到嗅探器中的尝试连接。

我在发生超时时对服务器执行ping和traceroute,两者都没问题(我从服务器得到响应)

所以在我看来,问题出在java应用程序中,甚至没有尝试连接。 我正在使用httpclient 4.4.1,如果它有任何重要性。

为什么我会收到这些超时?

1 个答案:

答案 0 :(得分:0)

我解决了。至少在我的情况下,我所做的只是重置计算机上的路由器,问题就消失了。

我已经在互联网上阅读了许多改变服务器的tcp / ip参数的建议。因此,如果您遇到这种情况,在执行任何操作之前,我建议您检查硬件。