应用程序正在使用Spring rest模板来调用web服务,而我正在使用
restTemplate.exchage(url)来调用webservice。
目前我们没有为此webservice调用传递任何超时值,如何为Spring Rest模板设置超时值。
答案 0 :(得分:5)
您可以使用类似于以下的代码来设置连接超时:
RestTemplate restTemplate = new RestTemplate();
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(2000);
如果您希望设置读取超时,则可以使用类似以下的代码:
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(2000);
时间以毫秒为单位。有关详情,请访问documentation page。
答案 1 :(得分:2)
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