问题描述
org.apache.http.NoHttpResponseException: club.xywy.com:80 failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
at com.util.HttpRequestUtil.getEntityByHttpGetMethod(HttpRequestUtil.java:47)
at com.util.HttpRequestUtil.getContentByHttpGetMethod(HttpRequestUtil.java:63)
at com.main.Test.main(Test.java:30)
Exception in thread "main" java.lang.NullPointerException
at com.util.HttpRequestUtil.getEntityByHttpGetMethod(HttpRequestUtil.java:56)
at com.util.HttpRequestUtil.getContentByHttpGetMethod(HttpRequestUtil.java:63)
at com.main.Test.main(Test.java:30)
问题解决
一开始我简单地认为只要及时关闭连接就行了,但还是行不通,一方面资源消耗大,另一方面httpget关闭连接,socket就被关闭了,依然会报错。
之后找到了连接池的方法,可以避免因连接频率高带来的问题,也可以减少资源的消耗。
连接池代码博文传送门