HTTP 客户端
使用 HttpClient 发送 GET/POST 请求、处理 JSON 响应
HTTP 客户端
Java 11+ 内置的 HttpClient 让 HTTP 请求变得简单。
学完本章你将: 发送 GET/POST 请求、处理 JSON 响应。
GET 请求
java
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode()); // 200
System.out.println(response.body()); // JSON 字符串
POST 请求(发送 JSON)
java
String json = """
{
"title": "Hello",
"body": "This is a test post",
"userId": 1
}
""";
HttpRequest postRequest = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> postResp = client.send(postRequest,
HttpResponse.BodyHandlers.ofString());
System.out.println(postResp.statusCode()); // 201
异步请求
java
// sendAsync 不阻塞
CompletableFuture<HttpResponse<String>> future = client
.sendAsync(request, HttpResponse.BodyHandlers.ofString());
future.thenAccept(resp -> {
System.out.println("状态: " + resp.statusCode());
System.out.println("内容: " + resp.body());
}).join();
请求配置
java
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.followRedirects(HttpClient.Redirect.NORMAL)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.timeout(Duration.ofSeconds(5))
.header("Authorization", "Bearer token123")
.header("Accept", "application/json")
.GET()
.build();