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>