Apache HttpClient - Abortar una solicitud

Puede cancelar la solicitud HTTP actual utilizando el abort() método, es decir, después de invocar este método, en una solicitud en particular, se abortará su ejecución.

Si se invoca este método después de una ejecución, las respuestas de esa ejecución no se verán afectadas y las ejecuciones subsiguientes serán abortadas.

Ejemplo

Si observa el siguiente ejemplo, hemos creado una solicitud HttpGet, imprimimos el formato de solicitud utilizado utilizando el getMethod().

Luego, hemos realizado otra ejecución con la misma solicitud. Imprimió la línea de estado usando la ejecución nuevamente. Finalmente, imprimió la línea de estado de la segunda ejecución.

Como se discutió, las respuestas de la primera ejecución (ejecución antes del método de aborto) se imprimen (incluida la segunda línea de estado que se escribe después del método de aborto) y, todas las ejecuciones posteriores de la solicitud actual después del método de aborto fallan invocando un excepción.

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

Salida

Al ejecutarse, el programa anterior genera la siguiente salida:

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)