当前位置: 首页 > news >正文

SpringBoot网络请求RestTemplate Util工具类

SpringBoot网络请求RestTemplate Util工具类

  • 1. 配置RestTemplate
  • 2.RestTemplateUtil工具类

1. 配置RestTemplate

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate() {SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();requestFactory.setConnectTimeout(60000);requestFactory.setReadTimeout(60000);//使用okhttp//RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());RestTemplate restTemplate = new RestTemplate(requestFactory);return restTemplate;}}

2.RestTemplateUtil工具类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;/*** RestTemplateUtil工具类*/
@Component
public class RestTemplateUtil {@Autowiredprivate RestTemplate restTemplate;/*  private static class SingletonRestTemplate {static final RestTemplate INSTANCE = new RestTemplate();}private RestTemplateUtil() {}public static RestTemplate getInstance() {return SingletonRestTemplate.INSTANCE;}*//*** post 请求** @param url  请求路径* @param data body数据* @return*/public String post(String url, String data) {HttpHeaders headers = new HttpHeaders();headers.add("Accept", "application/json");headers.add("Content-Encoding", "UTF-8");headers.add("Content-Type", "application/json; charset=UTF-8");HttpEntity<String> requestEntity = new HttpEntity<>(data, headers);return restTemplate.postForObject(url, requestEntity, String.class);}/*** get 请求** @param url   请求路径* @param token JWT所需的Token,不需要的可去掉* @return*/public String get(String url, String token) {HttpHeaders headers = new HttpHeaders();headers.add("Accept", "application/json");headers.add("Content-Encoding", "UTF-8");headers.add("Content-Type", "application/json; charset=UTF-8");if (token != null) {headers.add("Authorization", token);}HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);String responseBody = response.getBody();return responseBody;}/*** get 请求** @param url   请求路径* @return*/public  <T> T getWithSession(String url, String sessionId, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.add("session_id", sessionId);return get(url, httpHeaders, responseType, uriVariables).getBody();}// ----------------------------------GET-------------------------------------------------------/*** GET请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, Class<T> responseType) {return restTemplate.getForEntity(url, responseType);}/*** GET请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {return restTemplate.getForEntity(url, responseType, uriVariables);}/*** GET请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.getForEntity(url, responseType, uriVariables);}/*** 带请求头的GET请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return get(url, httpHeaders, responseType, uriVariables);}/*** 带请求头的GET请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {HttpEntity<?> requestEntity = new HttpEntity<>(headers);return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);}/*** 带请求头的GET请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return get(url, httpHeaders, responseType, uriVariables);}/*** 带请求头的GET请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<?> requestEntity = new HttpEntity<>(headers);return exchange(url, HttpMethod.GET, requestEntity, responseType, uriVariables);}// ----------------------------------POST-------------------------------------------------------/*** POST请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @return*/public  <T> ResponseEntity<T> post(String url, Class<T> responseType) {return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType);}/*** POST请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {return restTemplate.postForEntity(url, requestBody, responseType);}/*** POST请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);}/*** POST请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.postForEntity(url, requestBody, responseType, uriVariables);}/*** 带请求头的POST请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return post(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的POST请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return post(url, requestEntity, responseType, uriVariables);}/*** 带请求头的POST请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return post(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的POST请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return post(url, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的POST请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的POST请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, uriVariables);}// ----------------------------------PUT-------------------------------------------------------/*** PUT请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, Class<T> responseType, Object... uriVariables) {return put(url, HttpEntity.EMPTY, responseType, uriVariables);}/*** PUT请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);return put(url, requestEntity, responseType, uriVariables);}/*** PUT请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);return put(url, requestEntity, responseType, uriVariables);}/*** 带请求头的PUT请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return put(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的PUT请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return put(url, requestEntity, responseType, uriVariables);}/*** 带请求头的PUT请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return put(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的PUT请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return put(url, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的PUT请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的PUT请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, uriVariables);}// ----------------------------------DELETE-------------------------------------------------------/*** DELETE请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Object... uriVariables) {return delete(url, HttpEntity.EMPTY, responseType, uriVariables);}/*** DELETE请求调用方式** @param url 请求URL* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Class<T> responseType, Map<String, ?> uriVariables) {return delete(url, HttpEntity.EMPTY, responseType, uriVariables);}/*** DELETE请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);return delete(url, requestEntity, responseType, uriVariables);}/*** DELETE请求调用方式** @param url 请求URL* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);return delete(url, requestEntity, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return delete(url, httpHeaders, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);return delete(url, requestEntity, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return delete(url, httpHeaders, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);return delete(url, requestEntity, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return delete(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return delete(url, requestEntity, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setAll(headers);return delete(url, httpHeaders, requestBody, responseType, uriVariables);}/*** 带请求头的DELETE请求调用方式** @param url 请求URL* @param headers 请求头参数* @param requestBody 请求参数体* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);return delete(url, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的DELETE请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);}/*** 自定义请求头和请求体的DELETE请求调用方式** @param url 请求URL* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, uriVariables);}// ----------------------------------通用方法-------------------------------------------------------/*** 通用调用方式** @param url 请求URL* @param method 请求方法类型* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,按顺序依次对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) {return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);}/*** 通用调用方式** @param url 请求URL* @param method 请求方法类型* @param requestEntity 请求头和请求体封装对象* @param responseType 返回对象类型* @param uriVariables URL中的变量,与Map中的key对应* @return ResponseEntity 响应对象封装类*/public  <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) {return restTemplate.exchange(url, method, requestEntity, responseType, uriVariables);}}

相关文章:

  • 定制开发开源AI智能名片S2B2C商城小程序:数字营销时代的话语权重构
  • Ubuntu下编译mininim游戏全攻略
  • [ElasticSearch] ElasticSearch的初识与基本操作
  • MYSQL:主从复制原理及简单实现
  • python打卡day41@浙大疏锦行
  • 【MySQL】索引(B+树详解)
  • python:PyMOL 使用教程 及实用示例
  • 【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)
  • 1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
  • Python字符串格式化(三): t-string前瞻(Python 3.14 新特性)
  • VR/AR 视网膜级显示破局:10000PPI 如何终结颗粒感时代?
  • FreeRTOS多任务系统①
  • 利用计算机模拟和玉米壳废料开发新型抗病毒药物合成方法
  • 如何用VASP计算单个原子的能量和能级
  • 【leetcode】704. 二分查找
  • SOC-ESP32S3部分:19-ADC模数转换
  • 熵最小化Entropy Minimization (一): 基本认识
  • LangChain-自定义Tool和Agent结合DeepSeek应用实例
  • python装饰器
  • 深入理解数组索引:原理、应用与优化
  • 上海市工程质量建设管理协会网站/b站推广网站2024下载
  • 推荐聊城做网站的公司/央视新闻最新消息今天
  • 可以做任务的网站/营销活动策划方案
  • 浙江有限公司网站/万能优化大师下载
  • 如何做简单网站首页/seo内部优化包括哪些内容
  • 网站建设报价表格/东莞百度搜索网站排名