java http工具类 RestTemplate
时间: 2025-01-07 17:53:18 浏览: 39
### Java 中使用 RestTemplate 作为 HTTP 工具类
#### 创建 RestTemplate 实例
为了简化 RESTful Web 服务的交互,Spring 提供了 `RestTemplate` 类。此工具可以方便地发送 HTTP 请求并接收响应数据[^1]。
```java
// 默认构造函数创建 RestTemplate 的实例,默认采用 HttpURLConnection 发起网络请求
RestTemplate restTemplate = new RestTemplate();
```
#### 配置 HttpMessageConverters
为了让 `RestTemplate` 支持更多类型的消息体转换,在构建时可以通过设置不同的 `HttpMessageConverter` 来实现这一点。这些转换器负责序列化和反序列化消息主体的内容[^2]。
```java
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
messageConverters.add(converter);
restTemplate.setMessageConverters(messageConverters);
```
#### 执行 GET 请求获取资源列表
当需要从服务器读取信息时,可以利用 `getForObject()` 方法来发起 GET 请求,并直接映射返回的结果到指定的对象中去[^3]。
```java
String url = "https://api.example.com/users";
ResponseEntity<List<User>> response = restTemplate.exchange(
url,
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<User>>() {}
);
if (response.getStatusCode().is2xxSuccessful()) {
List<User> users = response.getBody();
}
```
#### POST 请求提交表单数据
对于向远程端点传递新记录的操作,则可通过 `postForEntity()` 或者更灵活的方式如 `exchange()` 进行处理。这里展示如何通过 POST 方式上传 JSON 数据给目标 URL[^4]。
```java
SearchUserVO searchCriteria = new SearchUserVO(); // 假设这是一个查询条件实体类
String serviceId = "user-center"; // Eureka 注册中心里的服务 ID 名称
String path = "/userController/selectUserByCondition";
ParameterizedTypeReference<List<User>> responseType = new ParameterizedTypeReference<List<User>>() {};
Map<String, Object> uriVariables = Collections.emptyMap();
ResponseEntity<List<User>> result = restTemplate.exchange(
loadBalancerClient.choose(serviceId).getUri() + path,
HttpMethod.POST,
new HttpEntity<>(searchCriteria),
responseType,
uriVariables
);
```
阅读全文
相关推荐


















