使用sping的restTemplate超时,如何检测超时?

时间:2016-03-05 00:39:33

标签: java spring-boot timeout resttemplate connection-timeout

我已按如下方式初始化了我的restTemplate:

HttpClient httpClient = HttpClientBuilder.create().build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setConnectTimeout(1000);
requestFactory.setReadTimeout(1000);
restTemplate = new RestTemplate(requestFactory);

我这样称呼它:

restTemplate.getForEntity(someString, String.class, SomeHashmapWithURLParameters)

如何处理两种超时?我假设会抛出一个异常?如果是这样,我可以捕获哪个特定的异常,以便专门处理只是超时。我以不同的方式处理其他异常。

1 个答案:

答案 0 :(得分:23)

如果是RestTemplate,当请求超时时,Spring将抛出ResourceAccessException。该实例下的基础异常将为java.net.SocketTimeoutException,并显示消息“已超时读取”。