You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:36:06