2012-04-03 109 views
1

我正在連接到Web服務,並沒有設置任何連接超時和HttpURLConnection讀取超時。什麼是默認連接超時和讀取超時?它依賴於Android手機嗎?或者Android/Java有超時的默認值?即使連接超時和讀取超時設置爲默認(無限),接收請求超時?

當我嘗試獲取連接超時值(getConnectTimeout())和讀取超時值(getReadTimeout())時,它返回的值爲0,我認爲它等於無窮大。但是,即使它們的值爲0,但有時候我仍然收到請求超時錯誤。所以他們的價值不能等於無限。有人能爲此啓發我嗎?

回答

3

你做了什麼研究嗎?默認值詳見documentation。以下是有關部分:

公共無效setConnectTimeout(INT超時)自:API等級1

設置建立連接 到此URLConnection實例指向的資源以毫秒爲單位的超時值。 A 如果此時建立的連接不能爲 ,則會拋出SocketTimeoutException。 默認值爲0,代表無限的 超時。

公共無效setReadTimeout(INT超時)自:API級別1

設置從已建立的連接的資源的輸入 流中讀取以毫秒爲單位的超時值。 A 如果此時建立的連接不能爲 ,則會拋出SocketTimeoutException。 默認值爲0,代表無限的 超時。

也有是有這樣一個字條超時:

的URLConnection支持兩個超時:一個連接超時和 讀取超時。默認情況下,操作不會超時。

您連接的服務器可能會超時您的客戶端。

+0

是的。這就是我迷惑的原因。我知道默認情況下,超時設置爲無限。然而,我的請求仍然超時。我期待不管什麼都不應該超時。 – Arci 2012-04-03 03:41:07

+0

謝謝!經過進一步的研究,我發現它確實是服務器誰是客戶端超時。 O_O – Arci 2012-05-08 08:00:33

+0

@Devin M:我在連接時間和讀取超時時遇到問題。在超時過期之前它們似乎過期。請看這個問題。你能幫我解決這個問題嗎? http://stackoverflow.com/questions/12650127/sockettimeoutexception-before-the-connect-and-read-timeout-expires – Ashwin 2012-09-29 06:22:14

0

如果getConnectTimeoutgetReadTimeout從對象返回零,那麼確實的確是的平均無窮大。這是繼承自基礎URLConnection類。

這可能是因爲您收到的例外是一個SocketTimeoutException所有,應驗證這一點 - 它可能得到IOException無論拋出的超時設置。

0

Javadoc connect()錯誤。零給你平臺連接超時,這不是無限的,而是一分鐘左右。您只能使用timeout參數降低此值,否則connect(),不會增加此值。