Apache HttpClient - Abandon d'une requête

Vous pouvez abandonner la requête HTTP actuelle à l'aide du abort() , c'est-à-dire qu'après avoir invoqué cette méthode, sur une requête particulière, son exécution sera abandonnée.

Si cette méthode est appelée après une exécution, les réponses de cette exécution ne seront pas affectées et les exécutions suivantes seront abandonnées.

Exemple

Si vous observez l'exemple suivant, nous avons créé une requête HttpGet, imprimé le format de requête utilisé en utilisant le getMethod().

Ensuite, nous avons effectué une autre exécution avec la même requête. Imprimé à nouveau la ligne d'état en utilisant la 1ère exécution. Enfin, imprimé la ligne d'état de la deuxième exécution.

Comme discuté, les réponses de la 1ère exécution (exécution avant la méthode d'abandon) sont imprimées (y compris la deuxième ligne d'état qui est écrite après la méthode d'abandon) et, toutes les exécutions suivantes de la demande en cours après la méthode d'abandon échouent en invoquant un exception.

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

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

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

      //Printing the method used
      System.out.println(httpget.getMethod());
 
      //Executing the Get request
      HttpResponse httpresponse = httpclient.execute(httpget);

      //Printing the status line
      System.out.println(httpresponse.getStatusLine());

      httpget.abort();
      System.out.println(httpresponse.getEntity().getContentLength());
 
      //Executing the Get request
      HttpResponse httpresponse2 = httpclient.execute(httpget);
      System.out.println(httpresponse2.getStatusLine());
   }
}

Production

Lors de l'exécution, le programme ci-dessus génère la sortie suivante -

On executing, the above program generates the following output.
GET
HTTP/1.1 200 OK
-1
Exception in thread "main" org.apache.http.impl.execchain.RequestAbortedException:
Request aborted
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:180)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at HttpGetExample.main(HttpGetExample.java:32)