小编Kir*_*kin的帖子

Java 11 HttpClient 中取消 http 请求

我正在尝试通过新的 Java 11 HttpClient 取消 http 请求。

这是我的测试代码:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class App {

    public static void main(String... args) throws InterruptedException {
        HttpClient client = HttpClient.newBuilder().build();

        URI uri = URI.create("http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.iso");
        HttpRequest request = HttpRequest.newBuilder().uri(uri).GET().build();

        var bodyHandler = HttpResponse.BodyHandlers.ofByteArrayConsumer(b -> System.out.println("#"));
        var future = client.sendAsync(request, bodyHandler);
        Thread.sleep(1000);

        future.cancel(true);
        System.out.println("\r\n----------CANCEL!!!------------");
        System.out.println("\r\nisCancelled: " + future.isCancelled());
        Thread.sleep(250);
    }
}
Run Code Online (Sandbox Code Playgroud)

future.cancel(true);我预计,该请求任务将在调用行后立即取消。因此,控制台中最后打印的行应该是isCancelled: true

但是,当我运行这段代码时,我看到这样的东西:

#################################################### ####################################################
-  -  -  -  - 取消!!! -  -  -  -  -  - …

java java-http-client

6
推荐指数
1
解决办法
6416
查看次数

标签 统计

java ×1

java-http-client ×1