首页 > 解决方案 > 在java中为HttpRequest添加代理

问题描述

我试图了解如何使用 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());

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

标签: javapostgethttprequesthttpapi

解决方案


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

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

   //The request code is identical to what I wrote above.

该方法是newBuilder反正而不是Builder


推荐阅读