2009-09-15 41 views
62

我對代表使用此NSURLConnection。NSURLConnection超時?

nsconnection = [[NSURLConnection alloc] initWithRequest:request 
    delegate:self startImmediately:YES]; 

問題是網站根本沒有反應。沒有什麼,只是在瀏覽器中空白頁面旋轉,沒有失敗。在我的代表中,我處理失敗,但是當網站沒有響應時,代表不會被調用。關於如何超時連接的任何想法?

回答

127

您可以在NSURLRequest對象中指定超時。一種方法是通過requestWithURL:cachePolicy:timeoutInterval:方法構建它。 (如果您不想擔心該部分,您可以傳遞默認的NSURLRequestUseProtocolCachePolicy cachePolicy參數。)超時值是以秒爲單位的浮點值,基本上是iPhone SDK中的所有時間間隔。

還要確保您的NSURLConnection的代表已設置並響應connection:didFailWithError:方法。連接完成後,連接始終調用此方法或connectionDidFinishLoading:

+0

的委託做的工作,當通過網絡服務器發送一個錯誤響應不會。在這種情況下,網絡服務器什麼都不發送只是旋轉。我配置請求方法來添加超時。謝謝 – Jordan 2009-09-15 02:48:58

+0

剛剛檢查。它已配置爲超時。 – Jordan 2009-09-15 02:50:24

+0

如果你想嘗試一個NSURLStuff的替代品,我的一位朋友推薦ASIHTTPRequest(谷歌它),這是免費使用,並且看起來很友好,包括超時功能。 – Tyler 2011-03-30 21:31:31

24

編輯︰這個答案現在已經過時,但在回答的日期是準確的。

我知道這個線程是舊的,但我也遇到了這個問題。在服務所在的內部網絡之外測試應用程序時發生這種情況。該服務最終會超時,但蘋果要求在發生超時之前240秒(4分鐘)。查看此主題以獲取關於此事的更多信息。

NSMutableURLRequest not obeying my timeoutInterval

+0

我相信我通過添加NSCredentials到我的應用程序來解決這個問題。無響應是由於服務器請求身份驗證,我沒有提供。 – Jordan 2010-08-31 22:52:40

+3

這是錯誤的信息!根據http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html%23//apple_ref/occ/cl/NSURLRequest,默認的超時間隔是60秒。 – stigi 2010-12-10 09:27:20

+4

@stigi它看起來像是在引用Mac OS的素材,而ezekielDFM正在談論iOS。 – leukosaima 2010-12-13 19:49:46