在Spring Rest Template中设置超时

时间:2015-10-07 03:30:21

标签: java spring web-services rest

应用程序正在使用Spring rest模板来调用web服务,而我正在使用
    restTemplate.exchage(url)来调用webservice。 目前我们没有为此webservice调用传递任何超时值,如何为Spring Rest模板设置超时值。

3 个答案:

答案 0 :(得分:5)

您可以使用类似于以下的代码来设置连接超时:

RestTemplate restTemplate = new RestTemplate();
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(2000);

如果您希望设置读取超时,则可以使用类似以下的代码:

((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(2000);

时间以毫秒为单位。有关详情,请访问documentation page

答案 1 :(得分:2)

从Spring 1.4开始引入的

RestTemplateBuilder可用于设置RestTemplate对象的读取和连接超时设置。这是示例代码-

final RestTemplate restTemplate =
    new RestTemplateBuilder()
        .setConnectTimeout(Duration.ofMillis(connectTimeoutMillis))
        .setReadTimeout(Duration.ofMillis(readTimeoutMillis))
        .build();

答案 2 :(得分:0)

我基于这些线程使用这种方法

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?>
 </body>
</html>

int DEFAULT_TIMEOUT = 5000; RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(DEFAULT_TIMEOUT) .setConnectionRequestTimeout(DEFAULT_TIMEOUT) .setSocketTimeout(DEFAULT_TIMEOUT) .build();

Spring RestTemplate Connection Timeout is not working

Java : HttpClient 4.1.2 : ConnectionTimeout, SocketTimeout values set are not effective