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.依赖注入
- @Autowirer
- private RestTemplate restTemplate
复制代码
- @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
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企服之家,中国第一个企服评测及商务社交产业平台。 |