这次的项目首次大量用到了httpclient4.1开发。但仅仅在测试环境就发生了无法连接的情况,异常报
Invalid use of SingleClientConnManager: connection still allocated
从国外的一张帖子看到,httpclient默认使用的是SingleClientConnManager,但在并发环境下最好使用ThreadSafeClientConnManager。代码如下:
HttpClient client = new DefaultHttpClient(new ThreadSafeClientConnManager());
HttpGet httpGet = null;
InputStream in = null;
try {
httpGet = new HttpGet(url);
HttpResponse response = client.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
in = response.getEntity().getContent();
return EntityUtils.toByteArray(responseEntity);
}
} finally {
if (httpGet != null) {
httpGet.abort();
}
IOUtils.closeQuietly(in);
}
return null;
这样就可以避免发生异常,感谢国外的这个帖子
http://old.nabble.com/HttpClient-instance-management-td24185137.html
http超时处理:
使用是apache的HttpClient:
DefaultHttpClient: