2020-02-20

Core Java HTTP Client

The HTTP Client was added in Java 11.

It can be used to request HTTP resources over the network. It supports HTTP/1.1 and HTTP/2, both synchronous and asynchronous programming models, handles request and response bodies as reactive-streams.

GET request that prints the response body as a String

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://openjdk.java.net/"))
      .build();
client.sendAsync(request, BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();

HttpClient

To send a request, first create an HttpClient from its builder.


  • The preferred protocol version ( HTTP/1.1 or HTTP/2 )
  • Whether to follow redirects
  • A proxy
  • An authenticator


HttpClient client = HttpClient.newBuilder()
      .version(Version.HTTP_2)
      .followRedirects(Redirect.SAME_PROTOCOL)
      .proxy(ProxySelector.of(new InetSocketAddress("www-proxy.com", 8080)))
      .authenticator(Authenticator.getDefault())
      .build();

HttpRequest

An HttpRequest is created from its builder.


  • The request URI
  • The request method ( GET, PUT, POST )
  • The request body ( if any )
  • A timeout
  • Request headers

HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://openjdk.java.net/"))
      .timeout(Duration.ofMinutes(1))
      .header("Content-Type", "application/json")
      .POST(BodyPublishers.ofFile(Paths.get("file.json")))
      .build()



No comments:

Post a Comment