冬雨财经 发表于 2024-12-28 21:27:56

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 进行转化
[*]留意好每一步的判空操作

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: RestTemplate关于https的使用详解