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():获取响应的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值