Apache HttpClient - Fermeture de la connexion

Si vous traitez les réponses HTTP manuellement au lieu d'utiliser un gestionnaire de réponses, vous devez fermer toutes les connexions http par vous-même. Ce chapitre explique comment fermer les connexions manuellement.

Lors de la fermeture manuelle des connexions HTTP, suivez les étapes ci-dessous -

Étape 1 - Créer un objet HttpClient

le createDefault() méthode de la HttpClients class renvoie un objet de la classe CloseableHttpClient, qui est l'implémentation de base de l'interface HttpClient.

En utilisant cette méthode, créez un HttpClient objet comme indiqué ci-dessous -

CloseableHttpClient httpClient = HttpClients.createDefault();

Étape 2 - Démarrer un bloc d'essai

Démarrez un bloc try-finally, écrivez le code restant dans les programmes du bloc try et fermez l'objet CloseableHttpClient dans le bloc finally.

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

Étape 3 - Créer un HttpGetobject

le HttpGet La classe représente la requête HTTP GET qui récupère les informations du serveur donné à l'aide d'un URI.

Créez une requête HTTP GET en instanciant la classe HttpGet en passant une chaîne représentant l'URI.

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

Étape 4 - Exécutez la demande Get

le execute() méthode de la CloseableHttpClient objet accepte un HttpUriRequest (interface) (c'est-à-dire HttpGet, HttpPost, HttpPut, HttpHead etc.) et renvoie un objet de réponse.

Exécutez la requête en utilisant la méthode donnée -

HttpResponse httpResponse = httpclient.execute(httpGet);

Étape 5 - Commencez un autre essai (imbriqué)

Démarrez un autre bloc try-finally (imbriqué dans le dernier try-finally), écrivez le code restant dans les programmes de ce bloc try et fermez l'objet HttpResponse dans le bloc finally.

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

Exemple

Chaque fois que vous créez / obtenez des objets tels que requête, flux de réponse, etc., démarrez un bloc try

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

Production

Lors de l'exécution du programme ci-dessus, la sortie suivante est générée -

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