RestTemplate
https://docs.spring.io/spring-framework/docs/5.1.9.RELEASE/spring-framework-reference/integration.html#rest-resttemplate
最后更新于
https://docs.spring.io/spring-framework/docs/5.1.9.RELEASE/spring-framework-reference/integration.html#rest-resttemplate
最后更新于
RestTemplate restTemplate = new RestTemplate();
// 发送一个无参的 GET 请求,将响应体作为字符串返回
ResponseEntity<String> response = restTemplate.getForEntity("https://httpbin.org/get", String.class);
// 判断状态码是否是200
if (response.getStatusCode() == HttpStatus.OK) {
// 获取响应体
System.out.println(response.getBody());
// 获取所有响应头
System.out.println(response.getHeaders());
// 获取响应头中的Content-Type
System.out.println(response.getHeaders().getContentType());
}User user = resTemplate.getForObject("https://httpbin.org/get?id=1", User.class);RestTemplate restTemplate = new RestTemplate();
String url = "https://httpbin.org/get?name={name}&age={age}";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class, "zhangsan", "20");
// User response = restTemplate.getForObject(url, User.class, "zhangsan", 20)
// restTemplate.exchange(url, HttpMethod.GET, null, User.class, "zhangsan", 20);RestTemplate restTemplate = new RestTemplate();
String url = "https://httpbin.org/get";
URI uri = UriComponentsBuilder.fromHttpUrl(url).queryParam("name", "zhangsan").queryParam("age", "20").build(true).toUri();
String forObject = restTemplate.getForObject(uri, String.class);RestTemplate restTemplate = new RestTemplate();
String url = "https://httpbin.org/get";
// 构建 URL
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url).queryParam("name", "张三").queryParam("age", 30);
// 构建最终的 URL
String finalUrl = builder.build().toUriString();
// 设置请求头并发送请求
HttpEntity<String> httpEntity = new HttpEntity<>(new HttpHeaders());
ResponseEntity<User> exchange = restTemplate.exchange(finalUrl, HttpMethod.GET, httpEntity, User.class);RestTemplate restTemplate = new RestTemplate();
String url = "https://httpbin.org/get?name={name}&age={age}";
Map<String, Object> paramMap = Map.of("name", "张三", "age", 20);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(new LinkedMultiValueMap<String, Object>(paramMap.size()));
ResponseEntity<User> exchange = restTemplate.exchange(url, HttpMethod.GET, httpEntity, User.class, paramMap);
// restTemplate.getForObject(url, String.class, paramMap);
// restTemplate.getForEntity(url, User.class, paramMap);RestTemplate restTemplate = new RestTemplate();
String url = "https://httpbin.org/get";
HttpHeaders headers = new HttpHeaders();
// 添加自定义请求头
headers.add("customHeader", "customHeaderValue");
// 设置请求头
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> httpEntity = new HttpEntity<>(headers);
ResponseEntity<Foo> exchange = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Foo.class);Map<String, String> map = Map.of("key1", "value1", "key2", "value2");
HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(map);
ResponseEntity<String> response = restTemplate.postForEntity("https://httpbin.org/post", httpEntity, String.class);
restTemplate.postForObject("https://httpbin.org/post", httpEntity, String.class);
restTemplate.exchange("https://httpbin.org/post", HttpMethod.POST, httpEntity, String.class); RestTemplate restTemplate = new RestTemplate();
// 首先,我们需要将 Content-Type 表头设置为 application/x-www-form-urlencoded
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 接下来,我们将表单变量包装到HttpEntity对象中,并将其传递给RestTemplate.exchange()方法。
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("key1", "value1");
// 接下来,我们使用HttpEntity实例构建请求
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
// 最后,我们通过在Endpoint上调用restTemplate.postForEntity()方法来执行请求
ResponseEntity<String> response = restTemplate.postForEntity("http://httpbin.org/post", request, String.class);java// 我么可以简单地使用ClientHttpRequestFactory接口的实现来配置超时
private ClientHttpRequestFactory getClientHttpRequestFactory() {
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
clientHttpRequestFactory.setConnectTimeout(5000);
return clientHttpRequestFactory;
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate(getClientHttpRequestFactory());
}