2016-03-05 49 views
9

我初始化我restTemplate如下:使用sping的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) 

如何处理这两个超时?我认为会抛出异常?如果是的话,我可以捕捉哪些特定的异常,以便专门处理超时。我以不同的方式处理其他例外情况。

回答

10

如果是RestTemplate,当请求超时时,Spring会抛出ResourceAccessException。在这种情况下,潜在的例外情况是java.net.SocketTimeoutException,并显示'Read timed out'。