我最近完成了一个应用程序,它连接到我的客户端提供的许多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发生。
我已无数次处理过网络服务而没有任何问题。但是我很难过为什么会这样。
答案 0 :(得分:0)
您可以在NSURLRequest对象中指定超时。一种方法是通过requestWithURL:cachePolicy:timeoutInterval:方法构造它。 (如果您不想担心该部分,可以传入默认的NSURLRequestUseProtocolCachePolicy cachePolicy参数。)超时是一个以秒为单位的浮点值,基本上是iPhone SDK中的所有时间间隔。
还要确保设置NSURLConnection的委托并响应连接:didFailWithError:方法。连接总是调用此方法或connectionDidFinishLoading:连接完成时。