我正在使用带有DefaultHttpClient和PoolingClientConnectionManager的Apache BasicResponseHandler。它们在不同的线程之间共享,每个线程都创建自己的HttpRequestBase扩展。
使用BasicResponseHandlers时,是否需要手动告诉管理员我已完成连接?我是否需要将其包装在finally中,因此异常不会导致连接泄漏?
换句话说,我需要这样做吗
HttpGet get = new HttpGet(address);
try {
httpclient.execute(get, new BasicResponseHandler());
} finally {
get.reset();
}
还是足够吗?
HttpGet get = new HttpGet(address);
httpclient.execute(get, new BasicResponseHandler());
中没有看到明确的答案
答案 0 :(得分:3)
这已足够,值得推荐。
保证 HttpClient#execute
方法在发生异常(I / O或运行时)时自动释放与请求关联的所有资源。当使用ResponseHandler处理HTTP响应时,底层连接会自动释放回连接管理器。