2017-03-17 155 views
1

我們將CURL HTTP Get請求轉換爲本地IOS代碼。使用CURL,我們可以設置兩個不同的超時時間 - CURLOPT_CONNECTTIMEOUT - 在呼叫失敗前多久無法連接,CURLOPT_TIMEOUT - 如果所有數據都沒有被檢索,呼叫失敗前多長時間。如果連接失敗,我們希望它很快返回(10秒),但我們可能會在慢連接下載大塊數據,所以我們需要完成超時時間非常長(5分鐘)。NSMutableURLRequest的連接和完成超時

我們如何設置使用NSMutableURLRequest

不同超時目前我們正在設置一個超時這樣

[urlRequest setTimeoutInterval:30.0f] 

有沒有一種方法來設置兩個不同的超時,像捲曲呢?我們目前正在設置哪個超時時間?連接超時或完成之一。

感謝

肖恩

回答

1

這是一個非常好的問題。它的documentation是我不清楚:

如果連接嘗試的請求保持空閒時間超過超時時間間隔較長時,該請求被認爲已經超時。默認的超時間隔是60秒。

我發現在蘋果開發者論壇,其中蘋果公司的員工解釋說這真的helpful post

timeoutInterval屬性等同於 timeoutIntervalForRequest財產。

他引用上NSURLSessionConfigurationproperty,它可以連接到一個NSURLSession。如果將timeoutInterval設置爲NSURLRequest,則將其用作配置上的timeoutIntervalForRequest的值。此屬性的文檔確實提供了一些見解:

請求超時間隔控制任務 在放棄之前應該等待其他數據到達的時間(以秒爲單位)。每當新數據到達時,與該值關聯的定時器 都會重置。當 請求計時器達到指定的時間間隔而沒有收到任何 新數據時,它會觸發超時。

默認值是60

基於此,看起來這個值實際上既不是!