Java11 - 标准 HttpClient

在 Java 9 中引入了一个增强的 HttpClient API 作为一项实验性功能。 在 Java11 中,现在 HttpClient 是标准。 建议使用 Apache Http Client API 等其他 HTTP Client API 来代替。 它的功能非常丰富,现在基于 Java 的应用程序可以在不使用任何外部依赖项的情况下发出 HTTP 请求。


步骤

以下是使用 HttpClient 的步骤。

  • 使用 HttpClient.newBuilder() 实例创建 HttpClient 实例

  • 使用 HttpRequest.newBuilder() 实例创建 HttpRequest 实例

  • 使用 httpClient.send() 发出请求并获得响应对象。


示例

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class APITester {
   public static void main(String[] args) {
      HttpClient httpClient = HttpClient.newBuilder()
         .version(HttpClient.Version.HTTP_2)
         .connectTimeout(Duration.ofSeconds(10))
         .build(); 
         try {
            HttpRequest request = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create("https://www.google.com"))
            .build();                              
            HttpResponse<String> response = httpClient.send(request,
            HttpResponse.BodyHandlers.ofString()); 

         System.out.println("Status code: " + response.statusCode());                            
         System.out.println("Headers: " + response.headers().allValues("content-type"));
         System.out.println("Body: " + response.body());
      } catch (IOException | InterruptedException e) {
         e.printStackTrace();
      }
   }
}

输出

它将打印以下输出。

Status code: 200
Headers: [text/html; charset=ISO-8859-1]
Body: <!doctype html>
...
</html>