Java 基于RestTemplate 发送网络请求

package com.macro.mall.tiny.common.utils;

import org.springframework.http.*;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;

import javax.servlet.http.HttpServletRequest;
import java.net.URI;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * 基于RestTemplate 访问方式的工具类
 *
 * @author Philip
 */
public class HttpRestTemplateUtil {

    private static final int CODE_STATUS = 200;

    //获取rest客户端实例
    private RestTemplate restTemplate = new RestTemplate();
    /**
     * RestTemplate 发送  HTTP GET请求
     * @return 
     */
    public JSONObject doHttpGet(String url, JSONObject param){

        JSONObject result = null;

        try{
            //解决乱码问题
            List<HttpMessageConverter<?>> messageConverters = this.resolveGarbledCodes();
            restTemplate.setMessageConverters(messageConverters);

            //设置请求头信息
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity httpEntity = new HttpEntity(param, headers);

            ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
            result = JSON.parseObject(response.getBody());
        }catch(Exception e){
             if (e.toString().contains("timed out")) {
                throw new ThirdException(EnumThirdCode.E_CONTRACT, "The interface request timed out,please try again.");
            }
            throw new ThirdException(EnumThirdCode.E_CONTRACT, "Interface exception");
        }
        //响应正常返回
        return result;
    }

   

    /**
     * RestTemplate 发送  HTTP POST请求
     * @param url
     * @return
     */
    public JSONObject doHttpPost(String url, JSONObject param){

        JSONObject result = null;

        try{
            //解决乱码问题
            List<HttpMessageConverter<?>> messageConverters = this.resolveGarbledCodes();
            restTemplate.setMessageConverters(messageConverters);

            //设置请求头信息
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity httpEntity = new HttpEntity(param, headers);

            ResponseEntity<String> response = restTemplate.postForObject(url, httpEntity, JSONObject.class);
            result = JSON.parseObject(response.getBody());
        }catch(Exception e){
             if (e.toString().contains("timed out")) {
                throw new ThirdException(EnumThirdCode.E_CONTRACT, "The interface request timed out,please try again.");
            }
            throw new ThirdException(EnumThirdCode.E_CONTRACT, "Interface exception");
        }
        //响应正常返回
        return result;
    }


    /**
     * RestTemplate 发送  HTTP PUT请求
     * @param url
     * @return
     */
    public JSONObject doHttpPut(String url, JSONObject param){

        JSONObject result = null;

        try{
            //解决乱码问题
            List<HttpMessageConverter<?>> messageConverters = this.resolveGarbledCodes();
            restTemplate.setMessageConverters(messageConverters);

            //设置请求头信息
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity httpEntity = new HttpEntity(param, headers);

            ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, String.class);
            result = JSON.parseObject(response.getBody());
        }catch(Exception e){
             if (e.toString().contains("timed out")) {
                throw new ThirdException(EnumThirdCode.E_CONTRACT, "The API request timed out,please try again.");
            }
            throw new ThirdException(EnumThirdCode.E_CONTRACT, "Interface exception");
        }
        //响应正常返回
        return result;
    }


   
    /**
     * 解决乱码的公共方法
     * /
    private List<HttpMessageConverter<?>> resolveGarbledCodes(){

        //解决乱码问题
        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
        //移除原来的转换器
        messageConverters.remove(1);
        //设置字符编码为utf-8
        HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
        messageConverters.add(1,converter);
        return messageConverters;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值