Java 企业级工具类全家桶-68-HTTP请求工具类
目录一、工具类功能二、所需环境三、方法与调用示例按需调用四、工具类源码可直接复制一、工具类功能基于 JDK 内置HttpClient发 GET/POST 请求拿回来的直接是业务对象——单个对象、List/Map这类泛型结构也可以就是响应原文非 2xx 把状态码与完整错误体一并交回。二、所需环境JDK 17或以上 Spring Boot 3.x或以上dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdscopeprovided/scope/dependency三、方法与调用示例按需调用方法序号1方法用途发一个 GET 请求把响应直接读成指定类型的对象对接 REST 接口取单个对象不用再手写解析方法定义public static R R get(String url, ClassR responseType)️入参解释public static R R get(请求地址, 目标类型)返回值解释R与目标类型同一个类型边界口径目标类型传String.class拿响应体原文传Void.class表示不关心返回体响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例get(textUrl, String.class)原生返回 拿到这段不是 JSONget(userUrl, User.class)返回对象 拿到User[name张三, age18]方法序号2方法用途发 GET 请求并把响应读成List/Map这类泛型结构接口返回数组时直接拿到对象列表方法定义public static R R get(String url, TypeReferenceR responseType)️入参解释public static R R get(请求地址, 泛型类型)返回值解释R由泛型类型引用决定如ListUser边界口径泛型入参写new TypeReference() {}目标类型由接收变量推断响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例get(usersUrl, new TypeReference() {})返回集合列表 拿到[User[name张三, age18], User[name李四, age20]]方法序号3方法用途GET 的全参版要带查询参数、自定义请求头或单独设超时时用不用为了这几个选项自己拼 URL方法定义public static R R get(String url, MapString, String queryParams, MapString, String headers, Duration requestTimeout, ClassR responseType)️入参解释public static R R get(请求地址, 查询参数, 请求头, 本次超时, 目标类型)返回值解释R与目标类型同一个类型边界口径默认只带Accept: application/json同名头以传入的headers为准覆盖它就是发表单请求的做法请求超时按本次调用生效默认 30 秒DEFAULT_REQUEST_TIMEOUT且约束延伸到响应体每一块不只是响应头连接超时固定 10 秒全局共用一个HttpClient自带连接池不要每次请求新建响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例get(url, params, headers, timeout, String.class)原生返回 拿到{name:张三,age:18}get(url, params, headers, timeout, User.class)返回对象 拿到User[name张三, age18]方法序号4方法用途GET 全参版的泛型结构入口既要带参数与自定义头、又要读回List/Map时用方法定义public static R R get(String url, MapString, String queryParams, MapString, String headers, Duration requestTimeout, TypeReferenceR responseType)️入参解释public static R R get(请求地址, 查询参数, 请求头, 本次超时, 泛型类型)返回值解释R由泛型类型引用决定边界口径参数、请求头与超时口径同方法3返回形态与方法2 一致响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例get(usersUrl, params, headers, timeout, new TypeReference() {})返回集合列表 拿到[User[name张三, age18], User[name李四, age20]]方法序号5方法用途发一个 JSON POST把请求体对象直接序列化发出去响应读回指定类型的对象创建类接口一步完成方法定义public static R R post(String url, Object body, ClassR responseType)️入参解释public static R R post(请求地址, 请求体, 目标类型)返回值解释R与目标类型同一个类型边界口径请求体是String就原样发送其余对象按 JSON 序列化日期写成 ISO-8601byte[]会被 Jackson 写成 base64 字符串本类不用于传原始二进制默认带Content-Type: application/json; charsetUTF-8发表单要自己覆盖这个头响应里多出来的字段不会让解析报错响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例post(url, form, String.class)原生返回 拿到{orderId:SO20260930001,created:true}post(url, form, CreateResult.class)返回对象 拿到CreateResult[orderIdSO20260930001, createdtrue]方法序号6方法用途POST 的泛型结构入口接口返回一批对象时直接读成List实体方法定义public static R R post(String url, Object body, TypeReferenceR responseType)️入参解释public static R R post(请求地址, 请求体, 泛型类型)返回值解释R由泛型类型引用决定边界口径请求体与请求头口径同方法5响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例post(listUrl, form, new TypeReference() {})返回集合列表 拿到[CreateResult[orderIdSO20260930002, createdtrue], CreateResult[orderIdSO20260930003, createdtrue]]方法序号7方法用途POST 的全参版要带查询参数、自定义头或单独设超时时用覆盖Content-Type就能发表单方法定义public static R R post(String url, Object body, MapString, String queryParams, MapString, String headers, Duration requestTimeout, ClassR responseType)️入参解释public static R R post(请求地址, 请求体, 查询参数, 请求头, 本次超时, 目标类型)返回值解释R与目标类型同一个类型边界口径同名头以传入的headers为准把Content-Type换成application/x-www-form-urlencoded即发表单超时与连接复用口径同方法3响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例post(url, form, params, headers, timeout, String.class)原生返回 拿到{name:张三}post(url, form, params, headers, timeout, FormEcho.class)返回对象 拿到FormEcho[name张三]方法序号8方法用途POST 全参版的泛型结构入口带参数与自定义头的同时把响应读成List/Map方法定义public static R R post(String url, Object body, MapString, String queryParams, MapString, String headers, Duration requestTimeout, TypeReferenceR responseType)️入参解释public static R R post(请求地址, 请求体, 查询参数, 请求头, 本次超时, 泛型类型)返回值解释R由泛型类型引用决定边界口径参数、请求头与超时口径同方法7返回形态与方法6 一致响应体在内存里读上限 8 MiBMAX_RESPONSE_BYTES超限立即断开不用于下载大文件非 2xx 抛HttpStatusException带状态码、最终地址、响应头与完整错误体可用bodyAs(Class)一步解成对象只放行http/https且必须有主机名其余协议抛IllegalArgumentException重定向按NORMAL跟随自定义请求头会被带到跳转后的地址跳转目标不可控时别在头里放凭据方法示例post(listUrl, form, params, headers, timeout, new TypeReference() {})返回集合列表 拿到[CreateResult[orderIdSO20260930002, createdtrue], CreateResult[orderIdSO20260930003, createdtrue]]方法序号9方法用途把键值对拼成 URL 查询串自己管请求或用别的客户端时也能复用同一套编码口径方法定义public static String toQueryString(MapString, String params)️入参解释public static String toQueryString(键值对)返回值解释String已按 UTF-8 百分号编码的查询串不带前导?边界口径键与值都按 UTF-8 百分号编码中文与保留字符不会拼坏参数不合法如params为null抛IllegalArgumentException它只是编码工具不参与任何请求发送方法示例toQueryString(Map.of(name, zhangsan, addr, xx街道))返回编码串 拿到namezhangsanaddrxx%E8%A1%97%E9%81%93四、工具类源码可直接复制领取方式 关注点赞收藏私信回复「java工具类」可领取100个工具类「Java企业级工具类全家桶1-100」的完整源码。 工具类已调试通过复制粘贴即可使用省时省力 可保存到自己网盘永久有效觉得对您有帮助麻烦点点关注啦您的关注是我创作的最大动力~

相关新闻

吉林忘不掉的背单词软件品牌哪个好?选对工具才能事半功倍

吉林忘不掉的背单词软件品牌哪个好?选对工具才能事半功倍

在吉林的英语学习者圈子里,经常能听到这样的抱怨:“单词背了一遍又一遍,第二天全忘光”“试了好几个背单词软件,没一个能坚持下来”。如果你也有同样的困惑,那说明你还没找对方法。今天我们就来聊聊吉林忘不掉的背单词…

2026/10/14 21:08:48 阅读更多 →
DocAgent 仓颉标准库实战:HashMap 的 get/add/contains 函数用法详解

DocAgent 仓颉标准库实战:HashMap 的 get/add/contains 函数用法详解

人工智能AI 技能文档开发工具 【免费下载链接】DocAgent 项目地址&#xff1a; https://gitcode.com/Cangjie-SIG/DocAgent 点击查看 免费下载 本篇技术指南以仓颉语言标准库 std.collection 中的哈希表实现 HashMap<K, V> 为核心&#xff0c;通过官方示例文件 sample_h…

2026/10/14 21:08:48 阅读更多 →
传感器基于改进贪心算法的最佳传感器位置选择附Matlab代码

传感器基于改进贪心算法的最佳传感器位置选择附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数学建模、数据处理、算法改进、程序设计科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;完整代码获取 定制创新 论文复现私信&#x1f34a;个人信条&#xff1a;做科研&#xff0c;博学之、审问之…

2026/10/14 21:08:48 阅读更多 →

最新新闻

杂交瘤HAT筛选后集落稀疏怎么办?从融合效率、HGPRT到铺板密度的7项排查

杂交瘤HAT筛选后集落稀疏怎么办?从融合效率、HGPRT到铺板密度的7项排查

摘要&#xff1a; 杂交瘤细胞融合后进入HAT选择培养&#xff0c;是单克隆抗体制备流程中非常关键的一步&#xff0c;但实验中经常出现集落稀疏、孔内细胞逐渐消失甚至整块板无细胞存活等问题。不同失败表现背后的原因并不相同&#xff1a;融合后24-48小时即出现大量细胞碎片&am…

2026/10/15 3:09:36 阅读更多 →
杂交瘤HAT筛选失败怎么排查?融合、HGPRT、培养基和铺板密度完整整理

杂交瘤HAT筛选失败怎么排查?融合、HGPRT、培养基和铺板密度完整整理

摘要&#xff1a; 杂交瘤HAT筛选常出现集落稀疏、细胞存活差的问题&#xff0c;成因覆盖细胞、培养基、操作等多个环节。本文区分两个发生阶段&#xff0c;梳理排查要点与验证方法&#xff0c;为单克隆抗体制备实验提供参考。 关键词&#xff1a;杂交瘤、HAT筛选、促杂交瘤生长…

2026/10/15 3:09:36 阅读更多 →
免费开源 Angular 9 后台管理仪表盘模板:Start Bootstrap SB Admin Angular 技术详解

免费开源 Angular 9 后台管理仪表盘模板:Start Bootstrap SB Admin Angular 技术详解

前端文档 【免费下载链接】startbootstrap A library of free and open source Bootstrap themes and templates 项目地址&#xff1a; https://gitcode.com/gh_mirrors/st/startbootstrap 点击查看 免费下载 SB Admin Angular 是 Start Bootstrap 推出的首款 Angular 版本后台…

2026/10/15 3:09:36 阅读更多 →
wiliwili 终极指南:把游戏机变成全平台 B 站播放器

wiliwili 终极指南:把游戏机变成全平台 B 站播放器

wiliwili 终极指南&#xff1a;把游戏机变成全平台 B 站播放器 【免费下载链接】wiliwili 第三方B站客户端&#xff0c;目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili wiliwili 是一款专…

2026/10/15 3:09:36 阅读更多 →
Path of Building:Path of Exile 离线构建规划工具,帮你算清 DPS

Path of Building:Path of Exile 离线构建规划工具,帮你算清 DPS

Path of Building&#xff1a;Path of Exile 离线构建规划工具&#xff0c;帮你算清 DPS 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 还在对着攻略表手动算伤害&#…

2026/10/15 3:09:36 阅读更多 →
笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

1. 这不是玩具项目&#xff1a;笑脸与口罩识别背后的真实业务切口“笑脸识别&#xff0c;口罩识别”——光看标题&#xff0c;很多人第一反应是&#xff1a;这不就是个课堂Demo&#xff1f;调用OpenCV读个摄像头&#xff0c;加两行cv2.CascadeClassifier&#xff0c;再套个预训…

2026/10/15 3:08:36 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时&#xff0c;网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上&#xff0c;依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里&#xff0c;扩缩容到底难在哪做过大模型推理服务部署的人&#xff0c;大概都经历过这样的场景&#xff1a;一个团队共用一套推理集群&#xff0c;A 业务跑的是 7B 的小模型&#xff0c;B 业务跑的是 72B 的大模型&#xff0c;C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子&#xff1a;一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减&#xff0c;为了把启动时间压进两秒以内&#xff0c;我手贱地把一串自认为“没用”的 systemd 服务给 disable 了&#xff0c;其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →