【问题标题】:Does HttpsURLConnection.getOutputStream() retry on connect timeout?HttpsURLConnection.getOutputStream() 是否会在连接超时时重试?
【发布时间】:2010-11-28 19:14:53
【问题描述】:

我遇到了一个问题,HttpURLConnection.getOutputStream() 需要 2-3 秒。我使用 HttpURLConnection.setConnectTimeout 设置连接超时,期望从 getOutputStream() 抛出 SocketTimeoutException(由 IOException 包装),因此我可以在另一台服务器上重试整个操作。

相反,它现在才有效。如果 getOutputStream() 收到 SocketTimeoutException,它会尝试内部连接吗?

【问题讨论】:

    标签: java http tcp httpurlconnection


    【解决方案1】:

    这不是addressed here吗?

    【讨论】:

    • "该方法的一些非标准实现可能会忽略指定的超时时间。要查看连接超时设置,请调用getConnectTimeout()。"
    【解决方案2】:

    如果你设置了ConnectTimeout(),它不会重试。否则,它会在抛出 IOException 之前再尝试一次。

    在我看来,你应该自己处理重试。

    【讨论】:

    • 你有这方面的参考吗?
    • 没有。我们在查看一些 HTTP 跟踪时发现了这种行为,并通过查看 Java 5 源代码进行了确认。所以这只是 Java 5 的 URL 处理程序的一种特殊行为。
    • 问题是......我发现设置超时确实会导致内部重试。我现在正在下载代码。
    猜你喜欢
    • 2013-08-07
    • 2018-01-03
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多