【httpclient】在Java开发中,`HttpClient` 是一个用于发送HTTP请求和接收HTTP响应的工具类。它在JDK 11中被引入为标准库的一部分,替代了之前的 `HttpURLConnection`,提供了更简洁、灵活和功能丰富的API。无论是进行简单的GET请求,还是复杂的POST操作,`HttpClient` 都能胜任。
以下是对 `HttpClient` 的总结及使用方式的对比表格:
| 功能 | 描述 | 示例代码 |
| 发送GET请求 | 向指定URL发送GET请求并获取响应 | ```java HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .build(); HttpResponse System.out.println(response.body()); ``` |
| 发送POST请求 | 向服务器提交数据(如JSON或表单) | ```java String jsonBody = "{\"name\":\"John\",\"age\":30}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(jsonBody)) .build(); HttpResponse System.out.println(response.body()); ``` |
| 设置超时时间 | 控制请求等待响应的时间 | ```java HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); ``` |
| 处理响应体 | 支持多种响应体处理方式(字符串、字节等) | ```java HttpResponse byte[] body = response.body(); ``` |
| 异步请求 | 使用CompletableFuture实现非阻塞请求 | ```java client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) .thenApply(res -> res.body()) .thenAccept(System.out::println); ``` |
| 设置代理 | 在需要时配置HTTP代理 | ```java HttpClient client = HttpClient.newBuilder() .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 8080))) .build(); ``` |
