NSURLSession无法实现断点续传下载的问题解决

来源:互联网 发布:手机淘宝复原聊天记录 编辑:程序博客网 时间:2024/05/22 14:34

最近在做一个类似网盘的项目,需要实现文件的上传和下载。

我自己用NSURLSession封装了一个下载工具类来使用,但是遇到了无法断点下载的问题。我们先来看看NSURLSession的暂停方法。

[task cancelByProducingResumeData:^(NSData * _Nullable resumeData) {        self.suspendBlock = suspend;        if (suspend) {            self.suspendBlock(resumeData);        }    }];
NSURLSession是利用NSURLSessionDownloadTask 来调用一个暂停方法,这个方法会返回一个data数据,这个数据包含了文件已下载部分的信息,我们在断点续传的时候只需要利用这个data就可以了。
  NSURLSessionDownloadTask *task = [self.session downloadTaskWithResumeData:resumeData];  [task resume];
我发现在我执行暂停的时候拿到的这个data是空的,这就是无法断点续传的原因,那么为什么是空的呢?  我查阅了苹果的官方文档


官方文档里表示必须要满足这些条件才能实现断点续传下载,问题最可能出现在第三条。 果然,我拿到的服务器响应头里并没有这两个参数


所以我猜想,NSURLSession应该是利用Etag或Last-modified来记录已下载的进度来实现断点续传。

最后,让服务器在响应头里加上这两个参数,问题完美解决。



0 0
原创粉丝点击