RestTemplate关于https的使用详解

发布于:2025-02-11 ⋅ 阅读:(38) ⋅ 点赞:(0)

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 进行转化
  • 注意好每一步的判空操作

网站公告

今日签到

点亮在社区的每一天
去签到