RestTemplate之GET和POST调用和异步回调
时间: 2023-12-06 22:45:12 浏览: 222
RestTemplate是Spring框架提供的一个用于发送HTTP请求的工具类,它支持GET、POST、PUT、DELETE等HTTP请求方法,并且可以通过设置请求头、请求参数、请求体等来实现不同的HTTP请求。
使用RestTemplate发送GET请求,可以通过以下代码实现:
```java
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
```
其中,url表示请求的地址,String.class表示返回值的类型,getForObject方法会将返回的JSON/XML等格式的数据自动转换为指定类型的对象。
使用RestTemplate发送POST请求,可以通过以下代码实现:
```java
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JSONObject requestJson = new JSONObject();
requestJson.put("key1", "value1");
requestJson.put("key2", "value2");
HttpEntity<String> entity = new HttpEntity<>(requestJson.toString(), headers);
String result = restTemplate.postForObject(url, entity, String.class);
```
其中,headers表示请求头,requestJson表示请求体,postForObject方法会将请求体中的JSON格式的数据自动转换为指定类型的对象。
RestTemplate还支持异步回调,可以通过以下代码实现:
```java
RestTemplate restTemplate = new RestTemplate();
ListenableFuture<ResponseEntity<String>> future = restTemplate.getForEntity(url, String.class);
future.addCallback(new ListenableFutureCallback<ResponseEntity<String>>() {
@Override
public void onSuccess(ResponseEntity<String> result) {
System.out.println(result.getBody());
}
@Override
public void onFailure(Throwable ex) {
ex.printStackTrace();
}
});
```
其中,getForEntity方法返回的是一个ListenableFuture对象,可以通过addCallback方法添加回调函数,在请求完成后执行回调函数。onSuccess方法表示请求成功时执行的回调函数,onFailure方法表示请求失败时执行的回调函数。
阅读全文