2010-08-25 38 views
1

我有NSURLConnection的一個奇怪的問題。我已經將連接時間設置爲20秒。nsurlconnection超時的問題

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0]; 
NSURLConnection *con= [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

我正在實現NSURLConnection的委託方法。

現在,當我運行該應用程序時,連接在20秒後沒有超時,但在2-3分鐘後它給出了'沒有互聯網連接'的錯誤。是否應該在20秒後發出超時錯誤?

回答

2

爲timeoutInterval的討論說,它開始(設定爲0),當負載活動的過程中發生:

的超時間隔指定在空閒 間隔獲分配到在一個請求中的 極限加載過程。 「空閒 時間間隔」定義爲自裝載過程中的請求發生裝載活動的最後一個實例 以來所經過的時間段。因此,當負載活動的一個實例發生時(例如,從網絡接收一個請求的字節),請求的空閒間隔爲0.如果空閒時間間隔 變爲大於或等於超時間隔,請求 被視爲超時。這個超時間隔以秒爲單位測量 。

沒有互聯網連接是一個錯誤。因此,如果獲得連接但可能需要更多時間才能在20秒(設定時間)內實際發生超時...

+4

可能是。但是[這裏](https://devforums.apple.com/thread/25282)中的討論也表明,如果連接請求具有主體,那麼timeoutInterval對於iphone至少爲240秒。所以無論如何,除非我在20秒後取消連接,否則至少需要240秒。 – bala 2010-08-25 09:06:21

+0

user430338的發現很重要,如果您發送同步(阻止)請求並且需要它更快超時... – Ying 2011-03-01 23:03:44