Apache HttpClient - Đóng kết nối

Nếu bạn đang xử lý phản hồi HTTP theo cách thủ công thay vì sử dụng trình xử lý phản hồi, bạn cần tự đóng tất cả các kết nối http. Chương này giải thích cách đóng các kết nối theo cách thủ công.

Trong khi đóng kết nối HTTP theo cách thủ công, hãy làm theo các bước dưới đây:

Bước 1 - Tạo một đối tượng HttpClient

Các createDefault() phương pháp của HttpClients lớp trả về một đối tượng của lớp CloseableHttpClient, là triển khai cơ bản của giao diện HttpClient.

Sử dụng phương pháp này, tạo một HttpClient đối tượng như hình dưới đây -

CloseableHttpClient httpClient = HttpClients.createDefault();

Bước 2 - Bắt đầu khối thử cuối cùng

Bắt đầu một khối thử cuối cùng, viết mã còn lại trong các chương trình trong khối thử và đóng đối tượng ClosableHttpClient trong khối cuối cùng.

CloseableHttpClient httpClient = HttpClients.createDefault();
try{
   //Remaining code . . . . . . . . . . . . . . .
}finally{
   httpClient.close();
}

Bước 3 - Tạo HttpGetobject

Các HttpGet lớp đại diện cho yêu cầu HTTP GET lấy thông tin của máy chủ đã cho bằng cách sử dụng URI.

Tạo một yêu cầu HTTP GET bằng cách khởi tạo lớp HttpGet bằng cách chuyển một chuỗi đại diện cho URI.

HttpGet httpGet = new HttpGet("http://www.tutorialspoint.com/");

Bước 4 - Thực hiện yêu cầu Nhận

Các execute() phương pháp của CloseableHttpClient đối tượng chấp nhận một HttpUriRequest (giao diện) đối tượng (tức là HttpGet, HttpPost, HttpPut, HttpHead, v.v.) và trả về một đối tượng phản hồi.

Thực hiện yêu cầu bằng phương pháp đã cho -

HttpResponse httpResponse = httpclient.execute(httpGet);

Bước 5 - Bắt đầu một lần thử cuối cùng (lồng nhau) khác

Bắt đầu một khối thử cuối cùng khác (được lồng trong khối thử cuối cùng trước đó), viết mã còn lại trong các chương trình trong khối thử này và đóng đối tượng HttpResponse trong khối cuối cùng.

CloseableHttpClient httpclient = HttpClients.createDefault();
try{
   . . . . . . .
   . . . . . . .
   CloseableHttpResponse httpresponse = httpclient.execute(httpget);
   try{
      . . . . . . .
      . . . . . . .
   }finally{
      httpresponse.close();
   }
}finally{
   httpclient.close();
}

Thí dụ

Bất cứ khi nào bạn tạo / lấy các đối tượng như yêu cầu, luồng phản hồi, v.v., hãy bắt đầu một khối thử cuối cùng ở dòng tiếp theo, viết đoạn mã còn lại trong khối thử và đóng đối tượng tương ứng trong khối cuối cùng như được minh họa trong chương trình sau:

import java.util.Scanner;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

public class CloseConnectionExample {
   
   public static void main(String args[])throws Exception{
 
      //Create an HttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();

      try{
         //Create an HttpGet object
         HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");

         //Execute the Get request
         CloseableHttpResponse httpresponse = httpclient.execute(httpget);

         try{
            Scanner sc = new Scanner(httpresponse.getEntity().getContent());
            while(sc.hasNext()) {
               System.out.println(sc.nextLine());
            }
         }finally{
            httpresponse.close();
         }
      }finally{
         httpclient.close();
      }
   }
}

Đầu ra

Khi thực hiện chương trình trên, kết quả sau được tạo:

<!DOCTYPE html>
<!--[if IE 8]><html class = "ie ie8"> <![endif]-->
<!--[if IE 9]><html class = "ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->
<html lang = "en-US"> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width,initial-scale = 1.0,userscalable = yes">
<link href = "https://cdn.muicss.com/mui-0.9.39/extra/mui-rem.min.css"
rel = "stylesheet" type = "text/css" />
<link rel = "stylesheet" href = "/questions/css/home.css?v = 3" />
<script src = "/questions/js/jquery.min.js"></script>
<script src = "/questions/js/fontawesome.js"></script>
<script src = "https://cdn.muicss.com/mui-0.9.39/js/mui.min.js"></script>
</head>
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-232293-17');
</script>
</body>
</html>