2011-02-14 72 views
0

如何請求在NSURLConnection上重試?在我的connectionDidFinishLoading方法中是否可以存儲並稍後重試連接?NSURLConnection重試請求

我看了看[連接開始],但是這似乎沒有做任何事情。連接對象是否仍包含原始請求?

感謝

回答

6

它沒有明確規定,但仍documentation表明NSURLConnection實例並不打算重複使用:

NSURLConnection的保留其委託時,它被初始化。它在連接完成加載,失敗或取消時釋放代理。

如果委託已經發布,那麼重新生成連接對象就沒有意義了。

+0

感謝尼基塔,究竟什麼是重試成功的連接請求的最佳方法是什麼? – user609906 2011-02-14 15:53:03

+1

@ user609906創建新的連接對象。 (如果你不讓它們被釋放,你可以重複使用請求和委託對象) – 2011-02-14 15:56:36

0

如果我是你,我會看看ASIHTTPRequest,它比內置的NSURLConnection業務更容易使用,但功能也更加強大。您可以指定重試次數,失敗超時以及HTTP請求的基本上每個方面。

0

您可以通過保留原有NSMutableURLRequest對象並再次建立連接,在斯威夫特解決這個問題,它看起來是這樣的:

class MyConnectionHandler { 
    var request:NSMutableURLRequest? 
    var connection: NSURLConnection? 
    var retryCount=0 
    var maxRetries=2 

    ... 
    functions to setup the request object, and create a connection 
    ---- 

    func connection(connection: NSURLConnection, didFailWithError error: NSError) { 
     if(retryCount<maxRetries) { 
      retryCount++ 
      self.connection=NSURLConnection(request: request!, delegate: self, startImmediately: true) 
     } else { 
      <throw a tantrum> 
     } 
    }