Search code examples
javapostgethttprequesthttpapi

Add Proxy to HttpRequest in java


I'm trying to understand how can I implement the use of a proxy for each request built like the following using 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());

I'm seeing from the doc (https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html#Asynchronous%20Example) that is possible with Synchronous requests. My code is within a method and it will run with threads parallelly. So how is it possible to set a proxy with Asynchronous Requests? If it is not possible, what's the difference between them?


Solution

  • Solved, it's a bit unclear the doc about that but at the end, I was able to set the proxy when building the client:

        HttpClient client = HttpClient.newBuilder().
            proxy(ProxySelector.of(new InetSocketAddress("proxy",port))))
            .build();
    
       //The request code is identical to what I wrote above.
    

    The method is newBuilder anyway and not Builder.