📅  最后修改于: 2023-12-03 14:39:16.382000             🧑  作者: Mango
在使用 Apache HttpClient 发送 HTTP 请求时,需要注意关闭连接以释放资源,否则可能导致内存泄漏或连接池资源耗尽。
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://www.example.com");
CloseableHttpResponse response = httpClient.execute(httpGet);
try {
// 处理响应
} finally {
response.close();
httpClient.close();
}
在执行完请求后,需要关闭响应和 HttpClient。
如果使用连接池来管理连接,则需要注意在销毁 HttpClient 或连接池时关闭连接。
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connManager)
.build();
HttpGet httpGet1 = new HttpGet("http://www.example.com");
CloseableHttpResponse response1 = httpClient.execute(httpGet1);
try {
// 处理响应
} finally {
response1.close();
}
HttpGet httpGet2 = new HttpGet("http://www.example.com");
CloseableHttpResponse response2 = httpClient.execute(httpGet2);
try {
// 处理响应
} finally {
response2.close();
}
httpClient.close(); // 关闭 HttpClient,同时关闭所有连接
connManager.shutdown(); // 关闭连接池,同时关闭所有连接
创建连接池并将其设置给 HttpClient 后,可以执行多个请求并在处理完响应后关闭。最后切记关闭连接池以关闭所有连接。
在使用 Apache HttpClient 时,务必要在正确的时候关闭连接以释放资源。根据具体使用情况选择关闭单个连接或整个连接池。