在Java 11中,已将最初在Java 9中引入的孵化HTTP客户端API进行了标准化。 它使连接URL,管理请求参数,cookie和会话更加容易,甚至支持异步请求和websocket。
 回顾一下,这是使用传统的URLConnection方法从URL读取的方式: 
var url = new URL("http://www.google.com");
var conn = url.openConnection();
try (var in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {in.lines().forEach(System.out::println);
} 这里是您可以如何使用HttpClient : 
var httpClient = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(URI.create("http://www.google.com")).build();
var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body()); HTTP客户端API还通过sendAsync方法支持异步请求,该方法返回CompletableFuture ,如下所示。 这意味着执行请求的线程不必等待I / O完成,并且可以用于运行其他任务。 
var httpClient = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(URI.create("http://www.google.com")).build();
httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);从文件发出包含JSON的POST请求也非常容易:
var httpClient = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(URI.create("http://www.google.com")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofFile(Paths.get("data.json"))).build();翻译自: https://www.javacodegeeks.com/2018/12/java-11-new-http-client-api.html