封装一个简单的Http请求工具类

使用了 RestTemplate、Jackson 来封装了一个简单的http请求工具类,方便后续使用

xml 复制代码
<!--jackson依赖 2.11.1 版本-->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-annotations</artifactId>
</dependency>
java 复制代码
/**
 * http工具类
 */
public class HttpUtil {

    /** Rest template */
    private final RestTemplate restTemplate;

    /**
     * Http util
     *
     * @since 1.0.0
     */
    public HttpUtil() {
        this.restTemplate = createRestTemplate();
    }

    /**
     * Http util
     *
     * @param restTemplate rest template
     * @since 1.0.0
     */
    public HttpUtil(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    /**
     * Create rest template
     *
     * @return the rest template
     * @since 1.0.0
     */
    private RestTemplate createRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        List<HttpMessageConverter<?>> converters = new ArrayList<>(2);
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
        converters.add(converter);
        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
        converters.addAll(messageConverters);
        restTemplate.setMessageConverters(converters);
        return restTemplate;
    }


    /**
     * Get
     *
     * @param <T>           parameter
     * @param url           url
     * @param headers       headers
     * @param requestObject request object
     * @param responseType  response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T get(String url, Map<String, String> headers, Object requestObject, Class<T> responseType) {
        return sendRequest(url, HttpMethod.GET, headers, requestObject, responseType);
    }

    /**
     * Get
     *
     * @param <T>           parameter
     * @param url           url
     * @param requestObject request object
     * @param responseType  response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T get(String url, Object requestObject, Class<T> responseType) {
        return sendRequest(url, HttpMethod.GET, null, requestObject, responseType);
    }

    /**
     * Get
     *
     * @param <T>          parameter
     * @param url          url
     * @param responseType response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T get(String url, Class<T> responseType) {
        return sendRequest(url, HttpMethod.GET, null, null, responseType);
    }

    /**
     * Post
     *
     * @param <T>           parameter
     * @param url           url
     * @param headers       headers
     * @param requestObject request object
     * @param responseType  response type
     * @return t t
     * @since 1.0.0
     */
    public <T> T post(String url, Map<String, String> headers, Object requestObject, Class<T> responseType) {
        return sendRequest(url, HttpMethod.POST, headers, requestObject, responseType);
    }

    /**
     * Post
     *
     * @param <T>           parameter
     * @param url           url
     * @param requestObject request object
     * @param responseType  response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T post(String url, Object requestObject, Class<T> responseType) {
        return sendRequest(url, HttpMethod.POST, null, requestObject, responseType);
    }

    /**
     * Post
     *
     * @param <T>          parameter
     * @param url          url
     * @param responseType response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T post(String url, Class<T> responseType) {
        return sendRequest(url, HttpMethod.POST, null, null, responseType);
    }

    /**
     * Send request
     *
     * @param <T>           parameter
     * @param url           url
     * @param method        method
     * @param headers       headers
     * @param requestObject request object
     * @param responseType  response type
     * @return the t
     * @since 1.0.0
     */
    public <T> T sendRequest(String url, HttpMethod method,
                             Map<String, String> headers,
                             Object requestObject,
                             Class<T> responseType) {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
        if (headers != null) {
            headers.forEach(httpHeaders::add);
        }
        HttpEntity<Object> httpEntity = new HttpEntity<>(requestObject, httpHeaders);
        ResponseEntity<T> responseEntity = this.restTemplate.exchange(url, method, httpEntity, responseType);
        return responseEntity.getBody();
    }

}
相关推荐
一天八小时1 小时前
计算机网络————(一)HTTP讲解
网络协议·计算机网络·http
南山十一少3 小时前
Spring Security+JWT+Redis实现项目级前后端分离认证授权
java·spring·bootstrap
427724004 小时前
IDEA使用git不提示账号密码登录,而是输入token问题解决
java·git·intellij-idea
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
李长渊哦4 小时前
常用的 JVM 参数:配置与优化指南
java·jvm
计算机小白一个4 小时前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
南宫生7 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
计算机毕设定制辅导-无忧学长8 小时前
Maven 基础环境搭建与配置(一)
java·maven
风与沙的较量丶9 小时前
Java中的局部变量和成员变量在内存中的位置
java·开发语言
m0_748251729 小时前
SpringBoot3 升级介绍
java