RestTemplate重定向请求
时间: 2023-11-16 10:01:40 浏览: 188
请求转发与重定向
RestTemplate是Spring提供的一个用于访问Rest服务的客户端,它可以发送HTTP请求并将响应映射到Java对象中。在使用RestTemplate发送请求时,如果请求的URL返回的是重定向状态码(如302),RestTemplate会默认自动重定向并返回200状态码,这可能会导致我们无法获取到重定向后的地址或者无法下载文件等问题。因此,我们需要取消自动重定向或者在重定向过程中拿到真正的URI。可以通过设置RestTemplate的requestFactory来实现取消自动重定向或者使用HttpClient来实现获取真正的URI。具体实现方法可以参考下面的代码示例:
取消自动重定向:
```
private static final RestTemplate REST_TEMPLATE = new RestTemplateBuilder()
.requestFactory(NoRedirectSimpleClientHttpRequestFactory.class)
.setConnectTimeout(Duration.ofMillis(3000))
.setConnectTimeout(Duration.ofMillis(5000))
.build();
```
获取真正的URI:
```
final RestTemplate restTemplate = new RestTemplate();
final HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
final HttpClient httpClient = HttpClientBuilder.create()
.setRedirectStrategy(new LaxRedirectStrategy())
.build();
factory.setHttpClient(httpClient);
restTemplate.setRequestFactory(factory);
```
阅读全文