如何請求在NSURLConnection上重試?在我的connectionDidFinishLoading方法中是否可以存儲並稍後重試連接?NSURLConnection重試請求
我看了看[連接開始],但是這似乎沒有做任何事情。連接對象是否仍包含原始請求?
感謝
如何請求在NSURLConnection上重試?在我的connectionDidFinishLoading方法中是否可以存儲並稍後重試連接?NSURLConnection重試請求
我看了看[連接開始],但是這似乎沒有做任何事情。連接對象是否仍包含原始請求?
感謝
它沒有明確規定,但仍documentation表明NSURLConnection
實例並不打算重複使用:
NSURLConnection的保留其委託時,它被初始化。它在連接完成加載,失敗或取消時釋放代理。
如果委託已經發布,那麼重新生成連接對象就沒有意義了。
如果我是你,我會看看ASIHTTPRequest,它比內置的NSURLConnection業務更容易使用,但功能也更加強大。您可以指定重試次數,失敗超時以及HTTP請求的基本上每個方面。
您可以通過保留原有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>
}
}
感謝尼基塔,究竟什麼是重試成功的連接請求的最佳方法是什麼? – user609906 2011-02-14 15:53:03
@ user609906創建新的連接對象。 (如果你不讓它們被釋放,你可以重複使用請求和委託對象) – 2011-02-14 15:56:36