NSURLConnection停止接收数据



我最近完成了一个应用程序,它连接到我的客户端提供的一些web服务。我以前做过无数次,没有任何问题。

然而,由于某种原因,其中一个服务,下载大约250kb-1mb的数据。

+ (void)connection:(MCURLConnection *)connection didReceiveData:(NSData *)data

偶尔在第一次调用后停止。

这是它工作时的日志

2014-08-19 11:57:43.270 MiniCheckout[886:60b] didReceiveResponse: didGetProductsForShop:
2014-08-19 11:57:43.270 MiniCheckout[886:60b] Code: 200
2014-08-19 11:57:43.271 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:43.457 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:43.645 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:43.830 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:44.003 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:44.007 MiniCheckout[886:60b] didReceiveData
2014-08-19 11:57:44.169 MiniCheckout[886:60b] ConnectionFinished:didGetProductsForShop:

当它没有(这太经常了!)

2014-08-19 11:57:43.270 MiniCheckout[886:60b] didReceiveResponse: didGetProductsForShop:
2014-08-19 11:57:43.270 MiniCheckout[886:60b] Code: 200
2014-08-19 11:57:43.271 MiniCheckout[886:60b] didReceiveData

就是这样,它就停了!

我有一个计时器等待60秒,这样应用程序就不会"锁定"。但这种情况经常发生,客户对此并不满意。

web服务器/服务由客户端提供,问题发生在Wifi和3G上。

我处理过无数次web服务,没有出现任何问题。但是我不知道为什么会发生这种情况。

你可以在NSURLRequest对象中指定一个超时时间。一种方法是通过requestWithURL:cachePolicy:timeoutInterval:方法构造它。(你可以传入默认的NSURLRequestUseProtocolCachePolicy cachePolicy参数,如果你不想担心那部分。)超时是一个以秒为单位的浮点值,基本上iPhone SDK中的所有时间间隔都是如此。

还要确保你的NSURLConnection的委托被设置并响应connection:didFailWithError:方法。连接总是在连接完成时调用此方法或connectionDidFinishLoading:

最新更新