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

RestTemplate关于https的使用详解

RestTemplate关于https的使用详解

一、restTemplate注入到bean里面。

@Configuration
public class RestTempleConfig {
    
    @Bean
    @Primary
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


    /**
     * https 请求的 restTemplate
     * @return
     * @throws Exception
     */
    @Bean
    public 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:
    @Autowirer
    private 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.kler.cn/a/454985.html

相关文章:

  • 编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法
  • PyTorch Lightning Callback介绍
  • 如何设置爬虫的User-Agent?
  • java实现网络IO高并发编程java NIO
  • 在uniapp中如何自定义一个图标
  • 【软件工程】十万字知识点梳理 | 期末复习专用
  • docker mysql5.7安装
  • .net core 的软件开发模式
  • 欲海航舟:探寻天性驱动下的欲望演变与人生驾驭
  • ArcGIS土地利用数据制备、分析及基于FLUS模型土地利用预测(数据采集、处理、分析、制图)
  • Python数据可视化小项目
  • 【Redis】Redis 安装与启动
  • Go 计算Utf8字符串的长度 不要超过mysql字段的最大长度
  • springboot502基于WEB的牙科诊所管理系统(论文+源码)_kaic
  • Linux知识点回顾(期末提分篇)
  • 文档大师:打造一站式 Word 报告解决方案1
  • Java实现观察者模式
  • 同步与异步日志系统的深入探讨与应用
  • 箭头函数与普通函数的区别
  • 使用 .NET 6 或 .NET 8 上传大文件