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

restTemplate使用总结

1、配置类

@Configuration
public class RestTemplateConfig() {@Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory factory) {return new RestTemplate(factory);}@Beanpublic ClientHttpRequestFactory simpleClientHttpRequestFactory() {HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setConnectTimeout(300000);factory.setReadTimeout(300000);return factory;}
}

实际使用时可以生成不同的factory

// 不进行证书校验
RestTemplate restTemplateHttps = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException {TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true;SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext,new NoopHostnameVerifier());HttpClientBuilder httpClientBuilder = HttpClients.custom();httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);CloseableHttpClient httpClient = httpClientBuilder.build();HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setHttpClient(httpClient);return factory;}

2、发送请求

(1)restTemplate.exchange

// get
HttpEntity<MyDTO> httpEntity = new HttpEntity<>(inputBody,headers)
ResponseEntity<Map> exchange = restTemplate.exchange(url,HttpMethod.GET,httpEntity,Map.class)// Post
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<Map<String, Object>>(params, headers);ResponseEntity<refreshUeResultDTO> ret = restTemplate.exchange(restfulUrl, HttpMethod.POST, httpEntity,refreshUeResultDTO.class);

(2) restTemplate.getForEntity

ResponseEntity<String> ret = restTemplate.getForEntity(restful, String.class, new HashMap<>());

getForEntity没法直接携带header

(3)restTemplate.postForEntity

HttpEntity<EspaceMessageDTO> httpEntity = new HttpEntity<>(espaceMessageDTO,headers);ResponseEntity<Object> res = restTemplate.postForEntity(url,httpEntity, Object.class);

(4)接收的类带泛型

ResponseEntity<List<RundeckTaskDO>> result = restTemplate.exchange(restful, HttpMethod.GET, entity, new ParameterizedTypeReference<List<RundeckTaskDO>>() {});
http://www.lryc.cn/news/385237.html

相关文章:

  • 【云服务器介绍】选择指南 腾讯云 阿里云全配置对比 搭建web 个人开发 app 游戏服务器
  • PostgreSQL 高级SQL查询(三)
  • 麒麟系统安装Redis
  • Java-方法引用
  • 华为---配置基本的访问控制列表(ACL)
  • Apple Intelligence,我们能得到什么?(上)
  • 【数据库中的存储桶】
  • 多选项卡的shiny
  • Python项目Django框架发布相关
  • kettle使用手册 安装9.0版本 建议设置为英语
  • golang string、byte[]以及rune的基本概念,用法以及区别
  • 全国211大学名单及排名
  • ASR 语音识别相关
  • kotlin require和assert 区别
  • 考研:数学一/二 和英语一/二 有什么区别
  • 地铁中的CAN通信--地铁高效安全运转原理
  • 简化数据提取:Excel-Extractor 使用指南
  • 用户中心项目全流程
  • 达梦数据库的系统视图v$database
  • Vue.js中的虚拟DOM
  • 【设计模式之迭代器模式 -- C++】
  • Linux网络编程:套接字编程
  • 多电商账户为什么要用指纹浏览器?
  • 用Rancher2.8.5部署K8s集群
  • 未来已来,如何打造智慧养殖场?
  • 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
  • Python和tkinter实现的字母记忆配对游戏
  • Leetcode Hot100之链表
  • 5.9k!一款清新好用的后台管理系统!【送源码】
  • Vue-cli搭建项目----基础版