尽管收到 304 服务器响应,AFNetworking 仍在下载文件

Posted

技术标签:

【中文标题】尽管收到 304 服务器响应,AFNetworking 仍在下载文件【英文标题】:AFNetworking downloading a file despite getting 304 Server response 【发布时间】:2014-06-25 15:16:03 【问题描述】:

所以我想从网络服务器下载一个文件,即使服务器响应是 304 Not Modified。 我使用 AFURLSessionManager 的 downloadTaskWithRequest: progress: destination: completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) 方法,该方法适用于未修改的文件。但是,如果服务器响应为 304,则在 completionHandler 块中似乎没有有效的文件路径,error 显示“请求失败:未修改 (304)”。

我尝试将 AFURLSessionManager 的 requestCachePolicy 配置为 NSURLRequestReloadIgnoringLocalAndRemoteCacheData 但这无济于事:虽然设置了 filePath,但无法从此文件路径重建数据。

有人可以帮助我,具体说明下载带有 AFNetworking 和服务器响应 304 的文件的最佳做法。提前致谢!

【问题讨论】:

【参考方案1】:

没关系,我发现了问题。我不必设置 NSURLSessionConfiguration 的 requestCachePolicy。我总是在downloadTaskWithRequest:的请求参数中添加IF_MODIFIED_SINCE_HEADER。忽略这一点,它可以工作。

【讨论】:

以上是关于尽管收到 304 服务器响应,AFNetworking 仍在下载文件的主要内容,如果未能解决你的问题,请参考以下文章

iOS:收到“304 Not Modified”响应时 AVPlayerItem 中的错误

常见HTTP状态(304,)

在 Android 中处理 Http 304 响应

节点快递:如何找出给定etag的状态是不是为304

Couchapp 在查询视图时返回 304

防止Tomcat中的304 NOT MODIFIED响应