Apache HttpClient - Cerrar conexión

Si está procesando respuestas HTTP manualmente en lugar de utilizar un controlador de respuestas, debe cerrar todas las conexiones http usted mismo. Este capítulo explica cómo cerrar las conexiones manualmente.

Al cerrar las conexiones HTTP manualmente, siga los pasos que se indican a continuación:

Paso 1: crea un objeto HttpClient

los createDefault() método del HttpClients clase devuelve un objeto de la clase CloseableHttpClient, que es la implementación base de la interfaz HttpClient.

Con este método, cree un HttpClient objeto como se muestra a continuación -

CloseableHttpClient httpClient = HttpClients.createDefault();

Paso 2: inicia un bloque de intentar finalmente

Inicie un bloque de prueba-finalmente, escriba el código restante en los programas en el bloque de prueba y cierre el objeto CloseableHttpClient en el bloque de finalmente.

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

Paso 3: crea un objeto HttpGetobject

los HttpGet class representa la solicitud HTTP GET que recupera la información del servidor dado usando un URI.

Cree una solicitud HTTP GET creando una instancia de la clase HttpGet pasando una cadena que represente el URI.

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

Paso 4: ejecutar la solicitud Get

los execute() método del CloseableHttpClient objeto acepta un HttpUriRequest (interfaz) objeto (es decir, HttpGet, HttpPost, HttpPut, HttpHead, etc.) y devuelve un objeto de respuesta.

Ejecute la solicitud utilizando el método dado:

HttpResponse httpResponse = httpclient.execute(httpGet);

Paso 5 - Inicie otro intento (anidado) finalmente

Inicie otro bloque de intentar-finalmente (anidado dentro del anterior intento-finalmente), escriba el código restante en los programas en este bloque de intentar y cierre el objeto HttpResponse en el bloque de finalmente.

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

Ejemplo

Siempre que cree / obtenga objetos como solicitud, flujo de respuesta, etc., inicie un bloque try finalmente en la siguiente línea, escriba el código restante dentro del try y cierre el objeto respectivo en el bloque finalmente como se demuestra en el siguiente programa:

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();
      }
   }
}

Salida

Al ejecutar el programa anterior, se genera la siguiente salida:

<!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>