Java 16.0 环境下如何使用 HttpRequest 发送简单 HTTP 请求
Java 16 使用 HttpRequest 发送简单 HTTP 请求指南
前置说明
Java 11 起正式将
java.net.http包纳入标准库,原HttpURLConnection已被这套异步非阻塞的新HTTP客户端API替代,Java 16 可直接使用无需引入额外依赖。
第一步:导入必要类
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.io.IOException;
示例1:发送GET请求
- 首先创建
HttpClient实例,全局复用即可,不需要每次请求新建 - 构建
HttpRequest对象,指定请求地址、请求方法(GET是默认值可以省略) - 发送请求并获取响应结果
public class GetRequestDemo { public static void main(String[] args) throws IOException, InterruptedException { // 1. 创建HttpClient实例,支持全局复用 HttpClient httpClient = HttpClient.newHttpClient(); // 2. 构建GET请求 HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com/api/get")) // 可选:添加自定义请求头 .header("User-Agent", "Java 16 HttpClient") .header("Accept", "application/json") .build(); // 3. 同步发送请求,阻塞等待响应返回 HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); // 解析响应内容 int statusCode = response.statusCode(); String responseBody = response.body(); System.out.println("响应状态码:" + statusCode); System.out.println("响应内容:" + responseBody); } }
示例2:发送POST请求(提交JSON参数)
public class PostRequestDemo { public static void main(String[] args) throws IOException, InterruptedException { HttpClient httpClient = HttpClient.newHttpClient(); // 构造POST请求的JSON参数 String jsonBody = "{\"username\":\"test\",\"password\":\"123456\"}"; // 构建POST请求 HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com/api/post")) .header("Content-Type", "application/json") // 指定POST方法和请求体内容 .POST(HttpRequest.BodyPublishers.ofString(jsonBody)) .build(); HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("响应状态码:" + response.statusCode()); System.out.println("响应内容:" + response.body()); } }
常用注意事项
HttpClient是线程安全的,建议整个应用复用同一个实例,避免重复创建带来的性能损耗- 除了同步的
send方法,还可以调用sendAsync实现异步非阻塞请求,适合高并发场景 BodyHandlers支持多种响应类型转换,除了ofString,还可以用ofByteArray、ofFile等直接把响应存为字节数组或者本地文件
内容的提问来源于stack exchange,提问作者grutty
相关产品推荐
相关产品推荐

