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

RestTemplate关于https的使用详解

RestTemplate关于https的使用详解

一、restTemplate注入到bean里面。

@Configuration
public class RestTempleConfig {@Bean@Primarypublic RestTemplate restTemplate() {return new RestTemplate();}/*** https 请求的 restTemplate* @return* @throws Exception*/@Beanpublic RestTemplate httpsRestTemplate() throws Exception {SSLContext sslContext = SSLContext.getDefault();HttpClient httpClient = HttpClients.custom().setSSLContext(sslContext).build();HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);requestFactory.setConnectTimeout(5000);requestFactory.setReadTimeout(10000);return new RestTemplate(requestFactory);}
}

二、restTemplate使用。

这里以https的请求为例(http同样的使用方式,只不过依赖查找的时候配置不同)。

不管put、 post 、 delete 、get ,都以exchange的方式统一实现。

1.依赖注入

  • http:
    @Autowirerprivate RestTemplate restTemplate
  • https:
    @Autowired@Qualifier("httpsRestTemplate")private RestTemplate httpsRestTemplate

2.方法使用

1、构造header
 HttpHeaders headers = new HttpHeaders();headers.add("Content-Type", "application/json");
2、构造requestBody
 String body = JSON.toJSONString(BaseReq.builder().build());
3、整合请求体
   HttpEntity<String> entity = new HttpEntity<String>(body, headers);
4、定义url

​ get请求可以直接拼接url

String url = " ";
5、进行调用

HttpMethod :不同的请求方式,填写不同的枚举

BaseResp :定义好返回结果的实体,可以直接返回

.getBody()方法: 直接返回对应的实体,否则则是返回 ResponseEntity

 BaseResp baseResp = httpsRestTemplate.exchange(url, HttpMethod.POST, entity, BaseResp.class).getBody();

3、关于里面Json转化的注解

1、组装body定义的实体内,字段名大小写问题
 @JSONField(name = "app_secret")private String appSecret;
2、返回的response内 ,字段名大小写问题
@JsonAlias("token_type")
private String tokenType;
3、备注
  • 如果还是有问题,转化不了json的话,可以尝试直接返回 String.class
  • 然后利用 JSON.parseObject 进行转化
  • 注意好每一步的判空操作
http://www.lryc.cn/news/510533.html

相关文章:

  • 消息中间件RabbitMQ和kafka
  • 学习C++:标识符命名规则
  • Bluetooth Spec【0】蓝牙核心架构
  • AppInventor2 ClientSocketAI2Ext 拓展加强版 - 为App提供TCP客户端接入,可发送二进制数据
  • Opencv之对图片的处理和运算
  • 使用Excel制作通达信自定义“序列数据“
  • Qt工作总结02 <设置工具栏ToolBar>
  • 解决Springboot整合Shiro自定义SessionDAO+Redis管理会话,登录后不跳转首页
  • Day56 图论part06
  • [python SQLAlchemy数据库操作入门]-04.连接数据库:增删改查
  • 黑马点评——基于Redis
  • RocketMQ的集群架构是怎样的?
  • VS2022+QT6.7 窗口置灰(遮罩)
  • 如何通过HTTP API插入或更新Doc
  • C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知
  • RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据
  • sentinel学习笔记6-限流降级(上)
  • 【Rust自学】6.4. 简单的控制流-if let
  • 【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
  • Vue项目中env文件的作用和配置
  • 在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)
  • 机器人C++开源库The Robotics Library (RL)使用手册(三)
  • Photoshop启动错误:找不到MSVCP140.dll的多步骤解决指南
  • mac中idea菜单工具栏没有git图标了
  • 学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比
  • C#数学相关开发性能优化方法
  • 【前沿 热点 顶会】AAAI 2025中与目标检测有关的论文
  • APP投放的归因框架设计
  • 职业生涯记录-1
  • 江苏捷科云:可视化平台助力制造企业智能化管理