当前位置: 首页 > 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+
http://www.dtcms.com/a/139408.html

相关文章:

  • 十二脏腑阴阳属性的全面总结
  • 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考古现场(二十二):降维打击·用二向箔优化内存模型
  • UE学习记录part18
  • rk算力集群usb做网卡
  • 数据一致性问题剖析与实践(一)——冗余数据存储分布式共识决策中的一致性问题
  • 生成树协议的构成(STP)
  • 贝叶斯均衡
  • 快速认识:数据库、数仓(数据仓库)、数据湖与数据运河
  • 2025第十七届“华中杯”大学生数学建模挑战赛题目B 题 校园共享单车的调度与维护问题完整成品正文33页(不含附录)文章思路 模型 代码 结果分享
  • 【技术派后端篇】canal实现MySQL/Redis缓存一致性
  • OpenAI 推出一对 AI 推理模型 o3 和 o4-mini
  • 【数据结构_10】二叉树(1)