Apache HttpClient - Fechando conexão

Se você estiver processando respostas HTTP manualmente em vez de usar um manipulador de resposta, será necessário fechar todas as conexões http sozinho. Este capítulo explica como fechar as conexões manualmente.

Ao fechar as conexões HTTP manualmente, siga as etapas abaixo -

Etapa 1 - Criar um objeto HttpClient

o createDefault() método do HttpClients classe retorna um objeto da classe CloseableHttpClient, que é a implementação básica da interface HttpClient.

Usando este método, crie um HttpClient objeto como mostrado abaixo -

CloseableHttpClient httpClient = HttpClients.createDefault();

Etapa 2 - iniciar um bloco tentar finalmente

Inicie um bloco try-finally, escreva o código restante nos programas no bloco try e feche o objeto CloseableHttpClient no bloco finally.

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

Etapa 3 - Criar um objeto HttpGet

o HttpGet classe representa a solicitação HTTP GET que recupera as informações do servidor fornecido usando um URI.

Crie uma solicitação HTTP GET instanciando a classe HttpGet passando uma string que representa o URI.

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

Etapa 4 - Executar a solicitação Get

o execute() método do CloseableHttpClient objeto aceita um HttpUriRequest (interface) (ou seja, HttpGet, HttpPost, HttpPut, HttpHead etc.) e retorna um objeto de resposta.

Execute a solicitação usando o método fornecido -

HttpResponse httpResponse = httpclient.execute(httpGet);

Etapa 5 - Iniciar outra tentativa (aninhada) - finalmente

Inicie outro bloco try-finally (aninhado no anterior try-finally), escreva o código restante nos programas neste bloco try e feche o objeto HttpResponse no bloco finally.

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

Exemplo

Sempre que você cria / obtém objetos como solicitação, fluxo de resposta, etc., inicie um bloco try finally na próxima linha, escreva o código restante dentro do try e feche o respectivo objeto no bloco finally conforme demonstrado no programa a seguir -

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

Resultado

Ao executar o programa acima, a seguinte saída é gerada -

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