Java封装httpClient
使用Hutool 库来封装一个灵活通用的 HTTP 请求接口,可以根据不同的请求参数类型(如 Map、JSON、XML 等)动态处理,并支持传入请求方法、请求头和请求 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():获取响应的内容。
