当前位置:网站首页>RestTemplate使用
RestTemplate使用
2022-07-01 06:27:00 【一条小咸鱼i】
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、 添加配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/** * RestTemplate工具类,主要用来提供RestTemplate对象 */
@Configuration//加上这个注解作用,可以被Spring扫描
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(500000);//单位为ms
factory.setConnectTimeout(500000);//单位为ms
return factory;
}
}
3、封装工具类
import com.alibaba.fastjson2.JSONObject;
import com.gc.api.entity.Rest;
import com.gc.common.utils.ResultMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.Map;
import java.util.Objects;
/** * @author sgc * @description RestTemplate工具类 * @date 2022/6/16 15:17 */
@Component
public class RestTemplateUtil {
@Autowired
protected LoginUtil loginUtil;
@Autowired
protected RestTemplate restTemplate;
/** * exchange发送post请求 入参为@requestBody实体类 application/json * * @param url 请求路径 * @param object @requestBody实体类 * @return * @throws Exception */
public Rest exchangePostEntityReturnRest(String url, Object object) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
Map<String, Object> bean2Map = MapUtil.transBean2Map(object);
HttpEntity resultHttpEntity = new HttpEntity(bean2Map, resultRequestHeader);
ResponseEntity<Rest> result = restTemplate.exchange(url, HttpMethod.POST, resultHttpEntity, Rest.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return Rest.error(result);
}
/** * exchange发送post请求 入参为@requestBody实体类 application/json * * @param url 请求路径 * @param object @requestBody实体类 * @return ResultMap * @throws Exception */
public ResultMap exchangePostEntityReturnResultMap(String url, Object object) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
Map<String, Object> bean2Map = MapUtil.transBean2Map(object);
HttpEntity resultHttpEntity = new HttpEntity(bean2Map, resultRequestHeader);
ResponseEntity<ResultMap> result = restTemplate.exchange(url, HttpMethod.POST, resultHttpEntity, ResultMap.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return null;
}
/** * exchange发送post请求 入参为@requestParam的Map application/json * * @param map requestParam参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return ResultMap * @throws Exception */
public ResultMap exchangePostRequestParamMapReturnResultMap(String url, Map<String, Object> map) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
HttpEntity resultHttpEntity = new HttpEntity(map, resultRequestHeader);
ResponseEntity<ResultMap> result = restTemplate.exchange(url, HttpMethod.POST, resultHttpEntity, ResultMap.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return null;
}
/** * exchange发送post请求 入参为@requestParam参数 application/json * * @param url 请求路径 * @param map requestParam参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return Rest * @throws Exception */
public Rest exchangePostRequestParamReturnRest(String url, Map<String, Object> map) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
// resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
String realUrl = url;
if (!map.isEmpty()) {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
realUrl = builder.build().toString();
}
HttpEntity resultHttpEntity = new HttpEntity(null, resultRequestHeader);
ResponseEntity<Rest> result = restTemplate.exchange(realUrl, HttpMethod.POST, resultHttpEntity, Rest.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return Rest.error(result);
}
/** * exchange发送post请求 入参为@requestParam参数 application/json * * @param url 请求路径 * @param map requestParam参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return ResultMap * @throws Exception */
public ResultMap exchangePostParamReturnResultMap(String url, Map<String, Object> map) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
// resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
String realUrl = url;
if (!map.isEmpty()) {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
realUrl = builder.build().toString();
}
HttpEntity resultHttpEntity = new HttpEntity(null, resultRequestHeader);
System.out.println(realUrl);
ResponseEntity<ResultMap> result = restTemplate.exchange(realUrl, HttpMethod.POST, resultHttpEntity, ResultMap.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return null;
}
/** * exchange发送get请求 入参为实体类 application/json * * @param url 请求路径 * @param object 实体类 * @return Rest * @throws Exception */
public Rest exchangeGetEntityReturnRest(String url, Object object) throws Exception {
//设置请求头
HttpHeaders headers = new HttpHeaders();
headers.add("token", loginUtil.getToken());
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
Map<String, Object> map = MapUtil.transBean2Map(object);
if (!map.isEmpty()) {
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
String realUrl = builder.build().toString(); // 在此处拼接真实请求地址 "?pageNo=1&pageSize=5"
HttpEntity<JSONObject> httpEntity = new HttpEntity<>(null, headers);
ResponseEntity<Rest> result = restTemplate.exchange(realUrl, HttpMethod.GET, httpEntity, Rest.class, map);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return Rest.error(result);
}
return Rest.error();
}
/** * exchange发送get请求 入参为没有标记@requestParam的参数(可不传) application/json * * @param url 请求路径 * @param map param参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return Rest * @throws Exception */
public Rest exchangeGetParamReturnRest(String url,Map<String,Object> map) throws Exception {
return exchangeGetRequestParamReturnRest(url,map);
}
/** * exchange发送get请求 入参为标记@requestParam的参数 application/json * * @param url 请求路径 * @param map param参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return Rest * @throws Exception */
public Rest exchangeGetRequestParamReturnRest(String url,Map<String,Object> map) throws Exception {
//设置请求头
HttpHeaders headers = new HttpHeaders();
headers.add("token", loginUtil.getToken());
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
String realUrl = builder.build().toString(); // 在此处拼接真实请求地址 "?pageNo=1&pageSize=5"
System.out.println("realUrl==>"+realUrl);
HttpEntity<JSONObject> httpEntity = new HttpEntity<>(null, headers);
ResponseEntity<Rest> result = restTemplate.exchange(realUrl, HttpMethod.GET, httpEntity, Rest.class, map);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return Rest.error(result);
}
/** * exchange发送post请求 入参为没有标记@requestParam的参数 application/json * * @param url 请求路径 * @param map param参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return Rest * @throws Exception */
public Rest exchangePostParamReturnRest(String url, Map<String, Object> map) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
String realUrl = builder.build().toString();
HttpEntity resultHttpEntity = new HttpEntity(null, resultRequestHeader);
ResponseEntity<Rest> result = restTemplate.exchange(realUrl, HttpMethod.POST, resultHttpEntity, Rest.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return Rest.error(result);
}
/** * exchange发送post请求 入参为标记@requestParam的map参数 application/json * * @param url 请求路径 * @param map param参数组合的map 例如: * Map<String, Object> map = new HashMap<>(); * map.put("unitGuid", unitGuid); * @return ResultMap * @throws Exception */
public ResultMap exchangePostRequestMapReturnResultMap(String url, Map<String, Object> map) throws Exception {
//设置请求头
HttpHeaders resultRequestHeader = new HttpHeaders();
resultRequestHeader.add("token", loginUtil.getToken());
resultRequestHeader.setContentType(MediaType.APPLICATION_JSON);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
for (Map.Entry<String, Object> e : map.entrySet()) {
builder.queryParam(e.getKey(), e.getValue());
}
String realUrl = builder.build().toString();
HttpEntity resultHttpEntity = new HttpEntity(null, resultRequestHeader);
ResponseEntity<ResultMap> result = restTemplate.exchange(realUrl, HttpMethod.POST, resultHttpEntity, ResultMap.class);
if (Objects.nonNull(result.getBody())) {
return result.getBody();
}
return null;
}
}
边栏推荐
- [ManageEngine Zhuohao] helps Julia college, the world's top Conservatory of music, improve terminal security
- 【企业数据安全】升级备份策略 保障企业数据安全
- Comment imprimer le tableau original
- Teach you how to implement a deep learning framework
- JMM详解
- 【#Unity Shader#Amplify Shader Editor(ASE)_第九篇】
- [unity shader ablation effect _ case sharing]
- Design of sales management system for C language course (big homework)
- 证券类开户有什么影响 开户安全吗
- [summary of knowledge points] chi square distribution, t distribution, F distribution
猜你喜欢

FPGA - clocking -02- clock wiring resources of internal structure of 7 Series FPGA
![[unity shader ablation effect _ case sharing]](/img/e3/464f1cf426e8c03ce3d538ed9cf4bc.png)
[unity shader ablation effect _ case sharing]

Async and await
![[ManageEngine Zhuohao] what is network operation and maintenance management and what is the use of network operation and maintenance platform](/img/a4/b1476515260e3af0ca0dcc031deb98.png)
[ManageEngine Zhuohao] what is network operation and maintenance management and what is the use of network operation and maintenance platform

Excel visualization

下载外文期刊的方法

IT服务管理(ITSM)在高等教育领域的应用

【ITSM】什么是ITSM,IT部门为什么需要ITSM
![[unity shader amplify shader editor (ASE) Chapter 9]](/img/f5/f0f6786406e149187e71c8e12cde0d.png)
[unity shader amplify shader editor (ASE) Chapter 9]
![[network security tool] what is the use of USB control software](/img/cc/20fc1f35c139c52c5922727368b835.png)
[network security tool] what is the use of USB control software
随机推荐
JMM详解
libpng12.so. 0: cannot open shared object file: no such file or directory
【企业数据安全】升级备份策略 保障企业数据安全
C language course set up student elective course system (big homework)
请求模块(requests)
C语言课设图书信息管理系统(大作业)
基金定投是高风险产品吗?
Redis安装到Windows系统上的详细步骤
ManageEngine Zhuohao helps you comply with ISO 20000 standard (IV)
【LeetCode】Day91-存在重复元素
Recueillir des trésors dans le palais souterrain (recherche de mémoire profonde)
HCM Beginner (II) - information type
【ManageEngine】如何实现网络自动化运维
[network security tool] what is the use of USB control software
浅谈SIEM
【Unity Shader 描边效果_案例分享第一篇】
Async and await
SQL学习笔记2
JMM details
[summary of problem thinking] Why is the register reset performed in user mode?