Apache HttpClient - przerywanie żądania
Możesz przerwać bieżące żądanie HTTP przy użyciu abort() metoda, tzn. po wywołaniu tej metody na określonym żądaniu jej wykonanie zostanie przerwane.
Jeśli ta metoda zostanie wywołana po jednym wykonaniu, nie wpłynie to na odpowiedzi tego wykonania, a kolejne wykonania zostaną przerwane.
Przykład
Jeśli zauważysz poniższy przykład, utworzyliśmy żądanie HttpGet, wydrukowaliśmy format żądania używany przy użyciu getMethod().
Następnie przeprowadziliśmy kolejne wykonanie z tym samym żądaniem. Wydrukowano wiersz statusu ponownie przy pierwszym wykonaniu. Na koniec wydrukowano wiersz statusu drugiego wykonania.
Jak wspomniano, do reakcji z 1 ul wykonania (wykonanie przed abort metody) są drukowane (w tym drugim wierszu stanu, który jest tworzony po wykonaniu metody abort), a wszystkie kolejne Wykonania bieżącego żądania po metody abort są nieudanej wywoływania wyjątek.
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());
}
}
Wynik
Podczas wykonywania powyższy program generuje następujące dane wyjściowe -
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)