使用 NSURLSession downloadTaskWithResumeData: 时如何更改 URL?
Posted
技术标签:
【中文标题】使用 NSURLSession downloadTaskWithResumeData: 时如何更改 URL?【英文标题】:How to change the URL when using NSURLSession downloadTaskWithResumeData:? 【发布时间】:2015-09-16 05:48:16 【问题描述】:我使用NSURLSession downloadTaskWithURL
: 下载文件,并使用NSURLSessionDownloadTask cancelByProducingResumeData:
生成NSData
并将其保存到本地临时文件。
那我想用NSURLSession
downloadTaskWithResumeData:
继续下载任务。
有一个问题,我用来下载文件的 URL 是一个临时 url,我需要请求一个新的 URL 来下载相同的文件。
使用 downloadTaskWithResumeData:
后,它可以帮助我创建一个与以前相同的 URL 的 NSURLSessionDownloadTask
。
如何将 URL 替换为我新请求的新 URL?
或者我怎样才能改变这个NSURLSessionDownloadTask
的HTTP请求?
您如何处理使用不同 URL 恢复 NSURLSessionDownloadTask
的情况?
我正在考虑获取NSURLSession
下载的 .tmp 文件,并在 HTTP Header 中设置 Range,然后使用新的临时 URL 写入此文件。
【问题讨论】:
【参考方案1】:如果资源的路径被修改,我不相信我们可以恢复下载。
根据 Apple Developer Class Reference:
只有满足以下条件才能恢复下载:
自您第一次请求资源以来,该资源没有更改
任务是 HTTP 或 HTTPS GET 请求
服务器在其响应中提供 ETag 或 Last-Modified 标头(或两者)
服务器支持字节范围请求
临时文件未因磁盘空间压力而被系统删除
正如我们所见,我们无法在恢复下载时以编程方式修改 URL。我们只能选择提供部分下载的数据。
【讨论】:
以上是关于使用 NSURLSession downloadTaskWithResumeData: 时如何更改 URL?的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发之网络编程--1NSURLSession的基本使用