我们使用NSURLSession在后台下载数据,并定义了timeoutIntervalForResource,因此如果花费太长时间会超时,但是如果由于某种原因,源服务器不存在则它仍处于等待状态。有没有办法让它立即中止,或者“问”' NSURLSessionDownloadTask如果还有什么东西已经下载了吗?
如果不这样做,在尝试从服务器下载数据之前执行预检查以确保服务器存在的最佳方法是什么?
这些服务器可能无法控制,因此我们无法下载一个小文件来检查可用性。例如,我们可能没有的唯一文件可能是一个相当大的视频。
答案 0 :(得分:1)
您确实可以询问有关其状态的任务。首先,检查响应属性。如果这是零,那么你还没有从服务器获得第一个数据包。如果这是非零,请根据需要使用 countOfBytesExpectedToReceive 和 countOfBytesReceived 来确定进度。
我还应该注意,这些属性都支持KVO,AFAIK。
如果您愿意,您还可以在安排后台请求之前执行显式DNS查找,但需要注意的是,如果用户的Internet连接可能会阻止您安排可能实际工作的内容在此期间又重新上线。 : - )