2009-09-16 105 views
1

我遇到了問題HttpURLConnectiongetOutputStream()花了2-3秒。我使用HttpURLConnection.setConnectTimeout設置連接超時,期望從getOutputStream()拋出SocketTimeoutException(由IOException包裝),所以我可以重試整個操作在另一臺服務器上。HttpsURLConnection.getOutputStream()在連接超時時重試嗎?

相反,它現在就可以工作。如果getOutputStream()獲取SocketTimeoutException,是否嘗試在內部進行連接?

回答

1

是不是這個addressed here

+0

不,我不這麼認爲。 – ripper234 2009-09-16 16:01:40

+0

「此方法的某些非標準暗示可能會忽略指定的超時。要查看連接超時設置,請調用getConnectTimeout()。」 – alphazero 2009-09-16 18:43:39

1

如果setConnectTimeout(),它不會重試。否則,它會在拋出IOException之前再嘗試一次。

在我看來,你應該自己處理重試。

+0

你有參考嗎? – ripper234 2009-09-16 16:01:02

+0

不。我們在查看某些HTTP跟蹤時發現了這種行爲,並通過查看Java 5源代碼進行了確認。所以這只是Java 5的URL處理程序的特殊行爲。 – 2009-09-16 17:29:51

+0

事情是...我發現設置超時似乎導致內部重試。我正在下載代碼。 – ripper234 2009-09-16 19:38:37