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 1ª 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)