自己因为工作需要使用到了spring 自带的resttemplate,因为感觉不好用就自己再封装了一下作为http调用工具使用,代码如下,需要的自取,如果帮到你请给博文点个赞谢谢。
package com.szdxh.myboot.util;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @ClassName RestTemplateUtil
* @Description restTemplate spring自带的http请求模板工具
* @Author 双子的小坏
* @Date 2021/4/12 16:57
*/
@Slf4j
public class RestTemplateUtil {
private static RestTemplate restTemplate = null;
/**
* @Author 双子的小坏
* @Description //拿到resttempalte的实例 * @Date 9:26 2021/5/13
* @Param []
* @return org.springframework.web.client.RestTemplate
**/
public static RestTemplate getInstance(){
if(restTemplate == null){
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
httpMessageConverters.stream().forEach(httpMessageConverter -> {
if(httpMessageConverter instanceof StringHttpMessageConverter){
StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
}
});
}
return restTemplate;
}
/**
* @Author 双子的小坏
* @Description //通用post方法返回json对象 * @Date 9:28 2021/5/13
* @Param [url:请求的地址, params:请求的参数 MultiValueMap<String,Object> params = new LinkedMultiValueMap(), mediaType:指定参数的请求类型 MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED]
* @return com.alibaba.fastjson.JSONObject
**/
public static JSONObject post(String url,MultiValueMap params,MediaType mediaType){
restTemplate = getInstance();
HttpHeaders headers = new HttpHeaders();
//用户指定传参类型是formdata还是json
headers.setContentType(mediaType);
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(params, headers);
ResponseEntity<String> str = restTemplate.postForEntity(url,request, String.class);
return JSONObject.parseObject( str.getBody());
}
/**
* @Author 双子的小坏
* @Description //通用get请求 * @Date 9:32 2021/5/13
* @Param [url地址, map,有参数就传,没参数就传个null]
* @return com.alibaba.fastjson.JSONObject
**/
public static JSONObject get(String url, HashMap<String,Object> map){
restTemplate = getInstance();
if(map!=null&&!map.isEmpty()){
url+= "?";
//检查是否是多个参数
Boolean isManyParam = false;
Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator();
do {
Map.Entry<String, Object> entry = entries.next();
if(isManyParam){
url += "&&"+entry.getKey()+"="+entry.getValue();
}else{
url += entry.getKey()+"="+entry.getValue();
}
isManyParam = true;
} while (entries.hasNext());
}
String str = restTemplate.getForObject(url,String.class);
return JSONObject.parseObject(str);
}
}