【问题标题】:How to change the URL when using NSURLSession downloadTaskWithResumeData:?使用 NSURLSession downloadTaskWithResumeData: 时如何更改 URL?
【发布时间】:2015-09-16 05:48:16
【问题描述】:

我使用NSURLSession downloadTaskWithURL: 下载文件,并使用NSURLSessionDownloadTask cancelByProducingResumeData: 生成NSData 并将其保存到本地临时文件。

那我想用NSURLSessiondownloadTaskWithResumeData:继续下载任务。

有一个问题,我用来下载文件的 URL 是一个临时 url,我需要请求一个新的 URL 来下载相同的文件。 使用 downloadTaskWithResumeData: 后,它可以帮助我创建一个与以前相同的 URL 的 NSURLSessionDownloadTask

如何将 URL 替换为我新请求的新 URL? 或者我怎样才能改变这个NSURLSessionDownloadTask的HTTP请求?

您如何处理使用不同 URL 恢复 NSURLSessionDownloadTask 的情况?

我正在考虑获取NSURLSession 下载的 .tmp 文件,并在 HTTP Header 中设置 Range,然后使用新的临时 URL 写入此文件。

【问题讨论】:

    标签: ios nsurlsession nsurlsessiondownloadtask


    【解决方案1】:

    如果资源的路径被修改,我不相信我们可以恢复下载。

    根据 Apple Developer Class Reference:

    只有满足以下条件才能恢复下载:

    • 自您第一次请求资源以来,该资源没有更改

    • 任务是 HTTP 或 HTTPS GET 请求

    • 服务器在其响应中提供 ETag 或 Last-Modified 标头(或两者)

    • 服务器支持字节范围请求

    • 临时文件未因磁盘空间压力而被系统删除

    正如我们所见,我们无法在恢复下载时以编程方式修改 URL。我们只能选择提供部分下载的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-06-18
      • 1970-01-01
      相关资源
      最近更新 更多