HTTP Client Deep Dive

Categories: HTTP Client, Java, HTTP, HTTP/2

JDK 11 saw the advent of a new HTTP Client and important new API for calling content on remote RESTful endpoints. This presentation will just focus on the HTTP Client are how to maximize its use.

We will cover

  • How to setup standard calls

  • How to work with proxies

  • How attach Flow API with either RXJava or Reactor to manipulate the results

  • How to process CompletableStages asynchronously

  • Processing HTTP/2

By the end of the presentation, you will have a complete understanding of the following code

HttpClient client = HttpClient.newHttpClient();

HttpRequest request =
  HttpRequest
    .newBuilder()
    .uri(URI.create(urlString))
    .build();

CompletableFuture<HttpResponse<String>> future =
  client.sendAsync(request,
    HttpResponse.BodyHandlers.ofString());

CompletableFuture<String> stringCompletableFuture = future
  .thenApply(HttpResponse::body)
  .thenApply(JSONDeserializer::processJson)
  .thenApplyAsync(m -> CountryFunctions.findLanguagesByRegion(m, "en", "Americas"));

stringCompletableFuture
  .orTimeout(15, TimeUnit.SECONDS)
  .thenAccept(System.out::println);