使用RestTemplate的exchange方法调用get请求
时间: 2023-11-09 10:47:33 浏览: 53
可以使用以下代码使用 `RestTemplate` 发送一个 GET 请求:
```java
RestTemplate restTemplate = new RestTemplate();
String url = "http://example.com/api/getData?id=123";
HttpHeaders headers = new HttpHeaders();
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(
url,
HttpMethod.GET,
requestEntity,
String.class);
String response = responseEntity.getBody();
```
在这个例子中,我们使用 `RestTemplate` 创建了一个 GET 请求。我们指定了请求 URL,并设置了一个 `Accept` 头部,表明我们想要 JSON 格式的响应。然后我们创建了一个 `HttpEntity` 对象,包含了我们的头部信息。最后,我们使用 `exchange` 方法发送请求,并将响应转化为一个 `String` 类型的对象。
相关问题
resttemplate.exchange发送get拼装参数
使用RestTemplate发送GET请求并拼装参数的方式有很多种,下面给出其中一种比较常见的方式:
```java
RestTemplate restTemplate = new RestTemplate();
String url = "https://example.com/api?param1={param1}¶m2={param2}";
// 设置请求参数
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
queryParams.add("param1", "value1");
queryParams.add("param2", "value2");
// 发送GET请求并获取响应
ResponseEntity<String> response = restTemplate.exchange(
url, HttpMethod.GET, null, String.class, queryParams
);
String responseBody = response.getBody();
```
上面的代码中,我们首先创建了一个RestTemplate对象,然后定义了请求URL,包含两个参数param1和param2,并使用占位符{}来表示参数值。接下来,我们使用MultiValueMap来存储请求参数,然后调用RestTemplate的exchange方法发送GET请求,并将参数传递给占位符。最后,我们获取响应体,并将其转换为字符串类型。
需要注意的是,如果请求参数中包含特殊字符,需要进行URL编码。可以使用Java自带的URLEncoder类进行编码,例如:
```java
String encodedParam = URLEncoder.encode("特殊字符", StandardCharsets.UTF_8);
queryParams.add("param", encodedParam);
```
restTemplate get请求添加请求头
使用RestTemplate的exchange方法来发送带有请求头的GET请求。具体步骤如下:
1. 创建HttpHeaders对象,并设置请求头信息。
```java
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer token");
```
2. 创建HttpEntity对象,并将HttpHeaders对象设置到其中。
```java
HttpEntity<String> entity = new HttpEntity<>(headers);
```
3. 调用RestTemplate的exchange方法发送GET请求,并将HttpEntity对象作为参数传入。
```java
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
```
完整代码示例:
```java
RestTemplate restTemplate = new RestTemplate();
String url = "http://example.com/api";
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer token");
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
String responseBody = response.getBody();
```