NSURLConnection停止接收数据

时间:2014-08-19 11:14:36

标签: web-services nsurlconnection ios7.1 nsurlconnectiondelegate

我最近完成了一个应用程序,它连接到我的客户端提供的许多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发生。

我已无数次处理过网络服务而没有任何问题。但是我很难过为什么会这样。

1 个答案:

答案 0 :(得分:0)

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

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