2

我有一个apache http client (4.2.1)连接超时的问题,如果主机存在但没有及时响应,连接被超时关闭(一切都如预期的那样),但如果没有这样的主机,客户端等待的时间比预期的要长(大约 12 秒而不是配置中指定的 5 个)。最终这会导致 NoRouteToHostException,可能是由于特定的网络问题(当我试图在另一个网络中重现此问题时,我在等待 5 秒后遇到了套接字读取超时异常,正如预期的那样)。我正在使用以下超时设置:

  • http.socket.timeout = 5 秒
  • http.connection.timeout = 5 秒

任何想法表示赞赏。

更新

如果有人遇到过同样的问题,很可能是由客户端执行的连接重试引起的。解决问题后我会更新这篇文章

更新2

最终我已经能够解决这个问题。如果没有明确指定请求重试处理程序,则该问题是由 AbstractHttpClient(即 DefaultHttpClient 的父级)使用的 DefaultHttpRequestRetryHandler 执行的连接重试引起的。因此,如果您想摆脱它,只需指定重试次数较少的请求重试处理程序

4

1 回答 1

1

最终我已经能够解决这个问题。如果没有明确指定请求重试处理程序,则该问题是由 AbstractHttpClient(即 DefaultHttpClient 的父级)使用的 DefaultHttpRequestRetryHandler 执行的连接重试引起的。因此,如果您想摆脱它,只需指定重试次数较少的请求重试处理程序

于 2014-08-11T16:59:56.897 回答