return new RestTemplate().getForObject(url, responseType);设置响应超时
时间: 2024-02-27 17:57:10 浏览: 95
使用RestTemplate进行HTTP请求时,可以设置响应超时时间,以便在响应时间过长时及时中断请求,避免浪费资源和等待时间。
以下是一个示例代码,展示如何使用RestTemplate设置响应超时时间:
```java
RestTemplate restTemplate = new RestTemplate();
// 设置连接超时时间为5秒
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(5000);
restTemplate.setRequestFactory(requestFactory);
// 设置读取超时时间为10秒
restTemplate.getInterceptors().add((request, body, execution) -> {
ClientHttpRequest clientRequest = execution.execute(request, body);
ClientHttpResponse clientResponse = clientRequest.execute();
clientResponse.getHeaders();
clientResponse.getRawStatusCode();
clientResponse.getStatusText();
clientResponse.getBody();
clientResponse.getHeaders();
clientResponse.close();
return clientResponse;
});
// 设置响应超时时间为15秒
restTemplate.getInterceptors().add((request, body, execution) -> {
ClientHttpRequest clientRequest = execution.execute(request, body);
ClientHttpResponse clientResponse = clientRequest.execute();
clientResponse.getHeaders();
clientResponse.getRawStatusCode();
clientResponse.getStatusText();
clientResponse.getBody();
clientResponse.getHeaders();
clientResponse.close();
return clientResponse;
});
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
String response = result.getBody();
```
在这个示例中,我们使用SimpleClientHttpRequestFactory类来设置连接超时时间为5秒。同时,我们还添加了两个拦截器来设置读取超时时间为10秒和响应超时时间为15秒。最后我们使用exchange方法发送HTTP GET请求,并获取响应结果。如果响应时间超过15秒,则会中断请求,并抛出异常。
阅读全文