Java Spring RestTemplate 超时无法正常工作

问题描述 投票:0回答:1

我有这样的场景,我向 API 发出请求,假设我正在使用restTemplate.exchange 方法执行该请求。我确实这样设置超时:

((HttpComponentsClientHttpRequestFactory) requestFactory).setConnectTimeout(200090);
      ((HttpComponentsClientHttpRequestFactory) requestFactory).setReadTimeout(99999999);
      ((HttpComponentsClientHttpRequestFactory) requestFactory).setConnectionRequestTimeout(200900);

当我在线时,一切正常,但是,当我按下发出请求并弹出网络电缆时,它会等待 10-20 秒(不是我的超时),并抛出 SocketTimeoutException ,就是这样,我调试后,尝试应用许多解决方案,但找不到任何有价值的东西。有人在使用 RestTemplate 和 Spring 时遇到过这种情况吗? (在调试中,所有内容都已相应设置,我的所有超时都存在,即使我使用工厂,它也会使用正确的实例)。

我想要的场景是:输入请求 -> 断开网线 -> 应用程序遵循其中设置的超时,只有在它之后才会给出错误或其他任何情况。我该如何解决这个问题?

Java JDK 1.8,httpclient-4.5.12,Spring 4.3.12-RELEASE。

java spring resttemplate
1个回答
0
投票

所以,无论谁遇到这个问题,问题都出在主机 ip 上,如果它存在,则从某个地方需要 20 秒,但是如果它不可用,则需要超时。

© www.soinside.com 2019 - 2024. All rights reserved.