CloseableHttpResponse response = null;
try {
// do some thing ....
HttpPost request = new HttpPost("some url");
response = getHttpClient().execute(request);
// do some other thing ....
} catch(Exception e) {
// deal with exception
} finally {
if(response != null) {
try {
response.close(); // (1)
} catch(Exception e) {}
request.releaseConnection(); // (2)
}
}
Tôi đã thực hiện yêu cầu thực hiện http như trên.sự khác nhau giữa CloseableHttpResponse.close() và httpPost.releaseConnection() là gì?
Để phát hành kết nối cơ bản, điều này có đúng để gọi (1) và (2) không? và sự khác biệt giữa hai lời kêu gọi là gì?
Rất cám ơn!
Xin chào Matt, có bất kỳ tham chiếu nào về điều này không? Tài liệu không rõ ràng về cách kết nối có thể được phát hành, ví dụ nếu thông qua response.close hoặc httpclient.close. Tất cả các ví dụ đều chỉ chứa các ví dụ trước, do đó, nó xuất hiện này là đủ, nhưng chỉ để chắc chắn. Ngoài ra, bạn có thể giải thích tại sao EntityUtils.consume là cần thiết ngay cả sau khi EntityUtils.toString mà nên xả đầu vào hoàn chỉnh? –
Tại sao EntityUtils.consume? Câu trả lời này giải quyết câu hỏi của bạn: "Nó thực sự thích hợp để trở thành một" công dân tốt "(và thực sự biết các hợp đồng của các giao diện HTTPClient) Những gì EntityUtils.consume sẽ làm là giải phóng tất cả các tài nguyên do httpEntity nắm giữ, về cơ bản có nghĩa là phát hành bất kỳ Luồng và đưa đối tượng Connection trở lại hồ bơi của nó (trong trường hợp trình quản lý kết nối của bạn là một trình đa luồng) hoặc giải phóng trình quản lý kết nối để nó có thể xử lý yêu cầu tiếp theo. " - http://stackoverflow.com/questions/15969037/why-did-the-author-use-entityutils-consumehttpentity – Matt
Ngoài ra: https://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html /fundamentals.html và xem phần 1.1.5 và 1.1.6 giải thích rằng bạn có thể đóng mà không cần tiêu thụ: "Khi làm việc với các thực thể truyền trực tuyến, người ta có thể sử dụng phương thức EntityUtils # consumption (HttpEntity) để đảm bảo rằng nội dung thực thể có Có thể có các tình huống ... khi chỉ một phần nhỏ của toàn bộ nội dung phản hồi cần được truy xuất và hình phạt hiệu suất để tiêu thụ nội dung còn lại và làm cho kết nối có thể tái sử dụng quá cao. ... " – Matt