我需要使用 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。