📜  Apache HttpClient-关闭连接(1)

📅  最后修改于: 2023-12-03 14:39:16.382000             🧑  作者: Mango

Apache HttpClient-关闭连接

在使用 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 时,务必要在正确的时候关闭连接以释放资源。根据具体使用情况选择关闭单个连接或整个连接池。