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

Java封装httpClient

使用Hutool 库来封装一个灵活通用的 HTTP 请求接口,可以根据不同的请求参数类型(如 MapJSONXML 等)动态处理,并支持传入请求方法、请求头和请求 URL,并返回响应体。通过这种方式,可以更高效地调用各种 RESTful API,适应不同的请求需求。

引入依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.10</version> 
</dependency>

创建通用请求方法

  • 创建一个通用方法,可以传入请求方法、参数、头信息和 URL。此方法将根据传入的请求方法执行相应的 HTTP 请求,并返回响应体。
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import cn.hutool.json.JSONObject;import java.util.Map;public class HttpClientUtil {/*** 发送HTTP请求** @param method   请求方法 (GET, POST, PUT, DELETE等)* @param url      请求的URL* @param params   请求参数,可以是Map、JSON、XML字符串等* @param headers  请求头,可以是Map* @return 返回响应体内容*/public static String sendRequest(String method, String url, Object params, Map<String, String> headers) {// 将字符串方法转换为Hutool的Method枚举类型Method httpMethod = Method.valueOf(method.toUpperCase());// 创建请求对象HttpRequest request = HttpUtil.createRequest(httpMethod, url);// 设置请求参数if (params != null) {if (params instanceof Map) {// 适用于GET请求或POST表单请求request.form((Map<?, ?>) params);} else if (params instanceof JSONObject) {// 适用于JSON格式的请求体request.body(params.toString());} else if (params instanceof String) {// 适用于直接传递XML、JSON字符串等格式request.body((String) params);}}// 设置请求头if (headers != null) {request.addHeaders(headers);}// 发送请求并获取响应HttpResponse response = request.execute();// 返回响应体return response.body();}
}

使用

  • 发送一个 POST 请求,并传递一些参数和请求头
import cn.hutool.json.JSONObject;import java.util.HashMap;
import java.util.Map;public class Main {public static void main(String[] args) {String url = "https://www.dzy.com/testapi";String method = "POST";// 设置请求参数JSONObject params = new JSONObject();params.put("username", "zy");params.put("tile", "test");params.put("userId", 1);// 设置请求头Map<String, String> headers = new HashMap<>();headers.put("Content-Type", "application/json");// 发送请求并获取响应体String response = HttpClientUtil.sendRequest(method, url, params, headers);System.out.println(response);}
}
  • HttpUtil.createRequest():根据传入的请求方法和 URL 创建一个请求对象。
  • request.form():当请求参数是 Map 时,用 form() 方法添加参数,这在 POST 表单提交时常用。
  • request.body():当请求参数是 JSON 对象时,用 body() 方法直接设置请求体。
  • request.addHeaders():用于添加请求头信息。
  • response.body():获取响应的内容。

http://www.mrgr.cn/news/704.html

相关文章:

  • ABBYY FineReader PDF v16.0 中文绿色便携免安装版本 下载 PDF转Word 截图文字提取 文档差异对比 泰比专业OCR文字识别工具
  • 【Linux】内核全量函数添加日志打印摸索
  • 高性能内存对象缓存Memcached原理与部署
  • 支付宝沙箱模拟支付的实现
  • 思科OSPF动态路由配置8
  • MATLAB 手动实现体素中心点采样抽稀法(72)
  • 2024下半年软考中级《软件设计师》—— 基础篇
  • 嵌入式八股-FreeRTOS面试30题(20240814)
  • es6 的解构赋值
  • 使用python-pptx添加文本框:在幻灯片中插入文本框并编辑文本内容
  • (十四)SpringCloudAlibaba-Nacos集群
  • 人格障碍诊断系统
  • Ps:首选项 - 文字
  • 谈谈ChatGPT、GPT4.0及GPT-4o
  • 秋招突击——8/15——知识补充——垃圾回收机制
  • Aria2@RPC下载@Alist批量下载
  • JMeter进阶技巧:参数化与数据驱动测试
  • 基于微信小程序的课堂考勤系统的设计与实现(论文+源码)_kaic
  • Vue 添加 dayjs 方便日期操作
  • 机器学习中的多模态学习