hutool包的http工具类封装

1、引入

        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.14</version>
        </dependency>

2、工具类封装

@Slf4j
public class HttpUtils {

    /**
     * 超时毫秒数。http的连接与读取
     */
    private static final int TIME_OUT_MILLISECONDS = 60000;

    /**
     * Content-Type
     */
    private static final String CONTENT_TYPE_JSON = "application/json; charset=utf-8";

    private static final String CONTENT_TYPE_FORM = "multipart/form-data";

    /**
     * GET请求
     */
    public static HttpResultResponse get(String url) {
        return get(url, null);
    }

    public static HttpResultResponse get(String url, Map<String, String> headerMap) {
        HttpResultResponse httpResultResponse = new HttpResultResponse();
        try {
            HttpResponse response = HttpRequest
                .get(url)
                .timeout(TIME_OUT_MILLISECONDS)
                .addHeaders(headerMap)
                .execute();

            if (!response.isOk()) {
                log.error("HttpUtils get 响应失败. url={},headerMap={}, response={}", url, headerMap, response.toString());
                return httpResultResponse.buildError();
            }

            return httpResultResponse.buildSuccess(response.body());
        } catch (HttpException e) {
            log.error("HttpUtils get HttpException异常. url={},headerMap={}", url, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        } catch (Exception e) {
            log.error("HttpUtils get Exception异常. url={},headerMap={}", url, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        }
    }

    public static HttpResultResponse post(String url, Object postBody) {
        return post(url, postBody, null);
    }

    /**
     * post 请求
     *
     * @param url       请求链接
     * @param postBody  请求对象 or 请求json字符串
     * @param headerMap 请求头map
     *
     * @return HttpResultResponse
     */
    public static HttpResultResponse post(String url, Object postBody, Map<String, String> headerMap) {
        HttpResultResponse httpResultResponse = new HttpResultResponse();

        try {
            HttpRequest httpRequest = HttpRequest
                .post(url)
                .timeout(TIME_OUT_MILLISECONDS)
                .addHeaders(headerMap);

            if (postBody instanceof byte[]) {
                httpRequest.body((byte[]) postBody);
            } else if (postBody instanceof String) {
                httpRequest.body((String) postBody);
            } else {
                httpRequest.body(JSON.toJSONString(postBody), CONTENT_TYPE_JSON);
            }

            HttpResponse response = httpRequest.execute();

            if (!response.isOk()) {
                log.error("HttpUtils post 响应失败. url={},postBody={}, headerMap={}, response={}", url, postBody,
                    headerMap, response.toString());
                return httpResultResponse.buildError();
            }

            return httpResultResponse.buildSuccess(response.body());
        } catch (HttpException e) {
            log.error("HttpUtils post HttpException异常. url={},postBody={}, headerMap={}", url, postBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        } catch (Exception e) {
            log.error("HttpUtils post Exception异常. url={},postBody={},headerMap={}", url, postBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        }
    }

    public static HttpResultResponse postByForm(String url, Object postBody, Map<String, String> headerMap) {
        HttpResultResponse httpResultResponse = new HttpResultResponse();

        String body;
        if (postBody instanceof String) {
            body = (String) postBody;
        } else {
            body = JSON.toJSONString(postBody);
        }

        try {
            HttpResponse response = HttpRequest
                .post(url)
                .body(body, CONTENT_TYPE_FORM)
                .timeout(TIME_OUT_MILLISECONDS)
                .addHeaders(headerMap)
                .execute();

            if (!response.isOk()) {
                log.error("HttpUtils post 响应失败. url={},postBody={}, headerMap={}, response={}", url, postBody,
                    headerMap, response.toString());
                return httpResultResponse.buildError();
            }

            return httpResultResponse.buildSuccess(response.body());
        } catch (HttpException e) {
            log.error("HttpUtils post HttpException异常. url={},postBody={}, headerMap={}", url, postBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        } catch (Exception e) {
            log.error("HttpUtils post Exception异常. url={},postBody={},headerMap={}", url, postBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        }
    }

    /**
     * put 请求, 无header
     *
     * @param url     链接
     * @param putBody 请求对象 or 请求json字符串
     *
     * @return HttpResultResponse
     */
    public static HttpResultResponse put(String url, Object putBody) {
        return put(url, putBody, null);
    }

    /**
     * put 请求
     *
     * @param url       请求链接
     * @param putBody   请求对象 or 请求json字符串
     * @param headerMap 请求头map
     *
     * @return HttpResultResponse
     */
    public static HttpResultResponse put(String url, Object putBody, Map<String, String> headerMap) {
        HttpResultResponse httpResultResponse = new HttpResultResponse();

        try {
            HttpRequest httpRequest = HttpRequest
                .put(url)
                .timeout(TIME_OUT_MILLISECONDS)
                .addHeaders(headerMap);

            if (putBody instanceof byte[]) {
                httpRequest.body((byte[]) putBody);
            } else if (putBody instanceof String) {
                httpRequest.body((String) putBody);
            } else {
                httpRequest.body(JSON.toJSONString(putBody), CONTENT_TYPE_JSON);
            }

            HttpResponse response = httpRequest.execute();

            if (!response.isOk()) {
                log.error("HttpUtil put 响应失败. url={},putBody={}, headerMap={}, response={}", url, putBody,
                    headerMap, response.toString());
                return httpResultResponse.buildError();
            }

            return httpResultResponse.buildSuccess(response.body());
        } catch (HttpException e) {
            log.error("HttpUtil put HttpException异常. url={},putBody={}, headerMap={}", url, putBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        } catch (Exception e) {
            log.error("HttpUtil put Exception异常. url={},putBody={},headerMap={}", url, putBody, headerMap, e);
            return httpResultResponse.buildError(e.getMessage());
        }
    }

}

自定义的http响应对象HttpResultResponse:

@Data
public class HttpResultResponse {

    /**
     * 响应成功 or 失败
     */
    private Boolean success;

    /**
     * 信息提示
     */
    private String message;

    /**
     * http响应的body
     */
    private String body;

    public HttpResultResponse buildSuccess(String body) {
        return buildSuccess(body, "响应成功");
    }

    public HttpResultResponse buildSuccess(String body, String message) {
        this.success = true;
        this.message = message;
        this.body = body;
        return this;
    }

    public HttpResultResponse buildError() {
        return buildError("响应失败");
    }

    public HttpResultResponse buildError(String message) {
        this.success = false;
        this.message = message;
        this.body = null;
        return this;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值