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;
    }

}

猜你喜欢

转载自blog.csdn.net/PhilipJ0303/article/details/127459638