当前位置: 首页 > news >正文

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+

相关文章:

  • 十二脏腑阴阳属性的全面总结
  • Qt6 以后,QSettings 读取ini 文件固定使用utf-8 编码
  • Coco-AI 接入自定义数据源
  • 基于springboot医药连锁店管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • selenium 实现模拟登录中的滑块验证功能
  • 【android telecom 框架分析 01】【基本介绍 1】【telecom服务是干什么的?】
  • Linux软件仓库
  • 管家婆工贸ERP BB104.采购费用均价分摊
  • 【.net core】【watercloud】数据库连接报错问题
  • 总结【过往部分项目经历一(计算机图形学方向)】
  • 基于X86/Nvidia+FPGA大模型具身智能机器人控制器解决方案,同时拥有算力与实时的便利
  • 计算机网络 - UDP协议
  • 图像预处理-添加水印
  • 端侧大模型综述On-Device Language Models: A Comprehensive Review
  • 23种设计模式-创建型模式之工厂方法模式(Java版本)
  • TCP连接建立:为什么是三次握手?
  • nohup命令使用说明
  • R4打卡——tensorflow实现火灾预测
  • 【软考-系统架构设计师】ATAM方法及效用树
  • JVM考古现场(二十二):降维打击·用二向箔优化内存模型
  • 奥迪4S店内揭车衣时遭“连环车损”,双方因赔偿分歧陷僵局
  • 商务部新闻发言人就中美经贸高层会谈答记者问
  • 贵州黔西市游船倾覆事故致9人死亡1人失联
  • 原油价格战一触即发?沙特不想再忍,领衔多个产油国加速增产
  • 包揽金银!王宗源、郑九源夺得跳水世界杯总决赛男子3米板冠亚军
  • 五一假期前两日,多地党政主官暗访景点、商圈安全工作