Apache HttpClient - Hủy yêu cầu

Bạn có thể hủy bỏ yêu cầu HTTP hiện tại bằng cách sử dụng abort() , tức là, sau khi gọi phương thức này, theo một yêu cầu cụ thể, việc thực thi nó sẽ bị hủy bỏ.

Nếu phương thức này được gọi sau một lần thực thi, các phản hồi của lần thực thi đó sẽ không bị ảnh hưởng và các lần thực thi tiếp theo sẽ bị hủy bỏ.

Thí dụ

Nếu bạn quan sát ví dụ sau, chúng tôi đã tạo một yêu cầu HttpGet, in định dạng yêu cầu được sử dụng bằng cách sử dụng getMethod().

Sau đó, chúng tôi đã thực hiện một lần thực thi khác với cùng một yêu cầu. In lại dòng trạng thái bằng lần thực thi thứ nhất . Cuối cùng, in dòng trạng thái của lần thực hiện thứ hai.

Như đã thảo luận, các phản hồi của lần thực thi thứ nhất (thực hiện trước phương thức hủy bỏ) được in (bao gồm dòng trạng thái thứ hai được viết sau phương thức hủy bỏ) và, tất cả các lần thực thi tiếp theo của yêu cầu hiện tại sau khi phương thức hủy bỏ không thực hiện được ngoại lệ.

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

Đầu ra

Khi thực thi, chương trình trên tạo ra kết quả sau:

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)