Java JDK 17 自带的 java.net.http.HttpClient入门案例

Java JDK 17 自带的 java.net.http.HttpClient是 JDK 11 引入的 HTTP 客户端 API 的增强版本,提供了轻量级、现代且符合标准的 HTTP 请求能力。

以下是快速入门指南:

一、核心类与功能

  1. HttpClient

    • 用于发送 HTTP 请求,支持同步和异步操作。

    • 示例创建:

      HttpClient client = HttpClient.newHttpClient(); 
      
  2. HttpRequest

    • 表示 HTTP 请求,可通过HttpRequest.newBuilder()构建。
    • 支持 GET、POST、PUT 等方法,可设置请求头、Body 等参数。
  3. HttpResponse

    • 存储 HTTP 响应结果,包含状态码、响应头、Body 等信息。

二、基本使用

1.发送get请求
HttpClient client = HttpClient.newHttpClient(); 
HttpRequest request = HttpRequest.newBuilder() 
    .uri(URI.create("https://api.example.com/data")) 
    .GET()
    .build();
 
HttpResponse<String> response = client.send(request,  HttpResponse.BodyHandlers.ofString()); 
System.out.println("Status  Code: " + response.statusCode()); 
System.out.println("Response  Body: " + response.body()); 
2. 发送 POST 请求
HttpRequest request = HttpRequest.newBuilder() 
    .uri(URI.create("https://api.example.com/submit")) 
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"key\":\"value\"}")) 
    .build();
 
HttpResponse<String> response = client.send(request,  HttpResponse.BodyHandlers.ofString()); 

三、异步请求(非阻塞)

client.sendAsync(request,  HttpResponse.BodyHandlers.ofString()) 
    .thenApply(HttpResponse::body)
    .thenAccept(System.out::println) 
    .join(); // 阻塞等待结果(可选)
 

四、注意事项

  1. 线程安全

    • HttpClient 是线程安全的,建议复用同一实例以提高性能。
  2. 资源管理

    • 同步请求需处理可能的 IOException,异步请求需通过 CompletableFuture 管理回调。
  3. 与第三方库对比

    • 对比 Apache HttpClient,JDK 内置的 HttpClient 更轻量且无需额外依赖69

五、JDK 17 新特性支持

  • 响应式流(Reactive Streams):支持处理大文件或流式数据。
  • WebSocket 支持:可通过 WebSocket 类实现双向通信(需 JDK 17+)。

六、环境准备

确保已安装 JDK 17 并配置环境变量,可通过以下命令验证:

java --version  # 应显示 JDK 17+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vic2334

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值