当前位置:网站首页>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;
}
}
边栏推荐
- 三分钟带你快速了解网站开发的整个流程
- C语言课设职工信息管理系统(大作业)
- 交换机配置软件具有的作用
- C language course design student information management system (big homework)
- 虚幻 简单的屏幕雨滴后处理效果
- 如果我在广州,到哪里开户比较好?究竟网上开户是否安全么?
- 请求模块(requests)
- 【#Unity Shader#自定义材质面板_第一篇】
- Uniapp tree level selector
- [ManageEngine Zhuohao] mobile terminal management solution, helping the digital transformation of Zhongzhou aviation industry
猜你喜欢

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

SQL学习笔记九种连接2

HCM Beginner (III) - quickly enter pa70 and pa71 to browse employee information PA10
![[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

Detailed steps for installing redis on Windows system

sci-hub如何使用

C language course design student information management system (big homework)

高阶-二叉搜索树详解

Record MySQL troubleshooting caused by disk sector damage

High order binary search tree
随机推荐
码力十足学量化|如何在财务报告寻找合适的财务公告
[network security tool] what is the use of USB control software
做技术,自信不可或缺
交换机配置软件具有的作用
C语言课设学生考勤系统(大作业)
下载外文期刊的方法
Forkjoin and stream flow test
端口扫描工具对企业有什么帮助?
SystemVerilog learning-10-validation quantification and coverage
idea 好用插件汇总!!!
请求模块(requests)
【ManageEngine卓豪】网络运维管理是什么,网络运维平台有什么用
给逆序对数求原数组
Pol8901 LVDS to Mipi DSI supports rotating image processing chip
[ManageEngine Zhuohao] what is network operation and maintenance management and what is the use of network operation and maintenance platform
Teach you how to implement a deep learning framework
SQL语句
SQL中DML语句(数据操作语言)
伪装请求头库: anti-useragent
Three minutes to quickly understand the whole process of website development