我使用的HttpClient 4.1.2。如果我做一个连接到特定的主机XYZ并保持 超过5运行客户端程序,以6小时,连接到同一个主机XYZ开始给:的Apache的HttpClient给连接超时后5个OT 6小时
org.apache.http.conn.ConnectTimeoutException: Connect to XYZ timed out
at
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:377)
at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at
org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
如果我连接到不同的主机,它将会成功。问题消失一次 我重新启动我的客户端程序。通过浏览器连接到同一台主机将会成功。
服务器是一个tomcat 6.客户端和服务器都在JRE 5上运行。我设置了连接超时= 20000和套接字超时= 60000.我在SingleClientConnManager中使用了DefaultHttpClient。
谢谢roraol。这非常有帮助。我会尝试这些并回传结果。 – Litty
如果我启用线级调试日志记录,则不会发生此问题。所以根本原因应该是第一个提到的原因。对?所以,我试过如下: 请看下评论: – Litty
'INT的StatusCode = res.getStatusLine()getStatusCode(); String reasonPhrase = res.getStatusLine()。getReasonPhrase(); Header [] headers = res.getAllHeaders(); HashMap headerMap = new HashMap (); 如果(头!= NULL){ \t为(报头报头:报头){ \t \t如果(标题!= NULL){ \t \t \t headerMap.put(header.getName(),header.getValue()) ; \t \t} \t} } HttpEntity resEntity = res.getEntity(); 如果(resEntity = NULL && resEntity.getContentLength()> 0!){ \t ByteArrayOutputStream OS =新ByteArrayOutputStream(); \t resEntity.writeTo(os); \t resStr = os.toString(); }' –
Litty