我需要使用 HTTP 协议下载一个 XML 文件,以便在我的 iPhone 应用程序上本地使用它。偶尔这个文件会在服务器上更新,但不是很频繁。
如何比较已经在 Documents 文件夹中下载的文件与服务器上的文件,如果内容已在服务器上更新,则只需下载它?
我需要使用 HTTP 协议下载一个 XML 文件,以便在我的 iPhone 应用程序上本地使用它。偶尔这个文件会在服务器上更新,但不是很频繁。
如何比较已经在 Documents 文件夹中下载的文件与服务器上的文件,如果内容已在服务器上更新,则只需下载它?
第一次下载文件时,保存响应的 Last-Modified 标头中的日期。您可以将其从NSHTTPURLResponse
对象中拉出。
在随后的运行中,将该日期If-Modified-Since
放在NSURLRequest
. 如果服务器上的文件没有改变,statusCode
则NSHTTPURLResponse
应该是 304(意思是“未修改”)并且响应的正文应该是空的。
如果您想遍历文档目录以查找特定命名的文件,请使用 NSFileManager-fileExistsAtPath:isDirectory
并将其与下载文件的名称(-suggestedFilename
只要您使用 NSURLResponse)进行比较-isEqualToString
。
如果您需要获取修订日期,请-attributesOfItemAtPath:error:
结合使用 NSFileManager 和键 NSFileModificationDate。