RestTemplate的使用
# RestTemplate的使用
# 一、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);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 二、restTemplate使用。
这里以https的请求为例(http同样的使用方式,只不过依赖查找的时候配置不同)。
不管put、 post 、 delete 、get ,都以exchange的方式统一实现。
# 1.依赖注入
- http:
@Autowirer
private RestTemplate restTemplate
1
2
2
- https:
@Autowired
@Qualifier("httpsRestTemplate")
private RestTemplate httpsRestTemplate
1
2
3
2
3
# 2.方法使用
# 1、构造header
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
1
2
2
# 2、构造requestBody
String body = JSON.toJSONString(BaseReq.builder()
.build());
1
2
2
# 3、整合请求体
HttpEntity<String> entity = new HttpEntity<String>(body, headers);
1
# 4、定义url
get请求可以直接拼接url
String url = " ";
1
# 5、进行调用
HttpMethod :不同的请求方式,填写不同的枚举
BaseResp :定义好返回结果的实体,可以直接返回
.getBody()方法: 直接返回对应的实体,否则则是返回 ResponseEntity
BaseResp baseResp = httpsRestTemplate.exchange(url, HttpMethod.POST, entity, BaseResp.class).getBody();
1
# 3、关于里面Json转化的注解
# 1、组装body定义的实体内,字段名大小写问题
@JSONField(name = "app_secret")
private String appSecret;
1
2
2
# 2、返回的response内 ,字段名大小写问题
@JsonAlias("token_type")
private String tokenType;
1
2
2
# 3、备注
- 如果还是有问题,转化不了json的话,可以尝试直接返回
String.class
- 然后利用
JSON.parseObject
进行转化 - 注意好每一步的判空操作
上次更新: 2024/03/26, 9:03:00