我的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,如果它有任何重要性。
为什么我会收到这些超时?
答案 0 :(得分:0)
我解决了。至少在我的情况下,我所做的只是重置计算机上的路由器,问题就消失了。
我已经在互联网上阅读了许多改变服务器的tcp / ip参数的建议。因此,如果您遇到这种情况,在执行任何操作之前,我建议您检查硬件。