在java中为HttpRequest添加代理

Vir*_*ula 5 java post get httprequest httpapi

我试图了解如何为每个使用 Java API 构建的请求实现代理的使用,如下所示:

    HttpClient client = HttpClient.newHttpClient();

    HttpRequest request = HttpRequest.newBuilder()
            .version(HttpClient.Version.HTTP_2)
            .uri(URI.createh("https://myurl"))
            .timeout(Duration.ofMinutes(2))
            .setHeader("User-Agent","Just an user agent")
            .GET()
            .build();

    HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());
Run Code Online (Sandbox Code Playgroud)

我从文档中看到(https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html#Asynchronous%20Example)通过请求这是可能的Synchronous。我的代码位于一个方法内,它将与线程并行运行。那么如何设置代理呢Asynchronous Requests?如果不可能,它们之间有什么区别?

Vir*_*ula 5

解决了,文档对此有点不清楚,但最后,我能够在构建客户端时设置代理:

    HttpClient client = HttpClient.newBuilder().
        proxy(ProxySelector.of(new InetSocketAddress("proxy",port))))
        .build();

   //The request code is identical to what I wrote above.
Run Code Online (Sandbox Code Playgroud)

方法newBuilder反正又不是Builder