如何在Web服务调用之间断开连接时处理应用程序
在几次采访中,我询问了有关处理连接,Web服务调用,服务器响应和所有问题的问题。即使现在我也不清楚很多事情,请您帮助我更好地了解以下情况?如何在Web服务调用之间断开连接时处理应用程序
什么是使用
NSURLSessionDataTask
代替NSURLConnection
-I具有即使NSURLSessionDataTask
连接断开,但没有为latter.But它的工作原理就像数据丢失的想法不会发生的优势在哪里?如果将请求发送到服务器后,或在连接到服务器的连接中断,我们如何处理我们在
NSURLConnection
和NSURLSessionDataTask
情况下结束的代码? - 我的想法是使用可达性类和检查时变为在线。我们发送的数据是在服务器端更新的。但是我们没有得到服务器的回应。我们能做些什么来处理这种情况? - 增加timeOutInterval是我们唯一能做的事情?
请帮我解决这些情况。非常感谢您提前!
这是多个问题,真的,但我会尽量简短回答。
-
大多数故障处理在
NSURLConnection
和NSURLSession
之间是相同的。后者的主要优点是支持后台下载和取消相关请求组。这就是说,如果你这样做,你认为可能会失败,一个大的下载,
NSURLSession
确实提供,让您恢复下载,如果你的网络连接失败下载任务,类似于用NSURLDownload
在OS X做(从未在iOS上可用)。但这仅对下载大文件有帮助,但不适用于大型上载(需要重新启动重要的服务器端支持)或其他请求。 -
你的直觉是正确的。当连接失败时,创建一个可访问性对象来监视特定的主机名,以查看何时再次尝试请求。然后,再次尝试请求。
您可能还会显示某种咨询用户界面来表示您没有Internet连接。 (通过建议,我的意思是用户不必点击并且不会影响离线使用应用程序的任何情况;请看Facebook应用程序中的一个很好的示例。)
-
提供唯一标识符,并在服务器响应时将其存储在服务器上,直到客户端确认收到响应(或在经过一段合理天数后清除它)为止。上传完成后,如果可以,服务器会回复它的响应。
如果出现问题,客户端会要求服务器重新发送与该唯一标识符关联的响应。一旦您的客户端有数据,它会确认收到并且服务器删除响应。如果您向服务器询问响应并且没有响应,那么上传并没有真正完成。
通过一些额外的工作,该方法可以支持更加可靠的长时间运行的上传。如果上传失败,请询问服务器为该标识符获取了多少数据,然后告诉服务器您将从下一个字节开始上传新数据。在服务器端,覆盖从该字节开始的旧数据(以防万一您询问长度时仍在写入某些数据)。
希望有所帮助。
相似的信息,也许帮助:http://stackoverflow.com/questions/28105504/what-is-the-biggest-difference-between-nsurlconnection-and-nsurlsession – shallowThought
@shallowThought:谢谢你的回应。读取像,NSURLSession允许我们保持数据/或保护应用程序免受数据丢失,如果网络连接breaks.Is它是正确的?或者我们应该考虑如何处理这种情况,比如网络连接中断。 – iOSManiac