2011-02-14 73 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> 
     } 
    }