【问题标题】:iOS Check if remote file has updates before downloadingiOS 下载前检查远程文件是否有更新
【发布时间】:2014-05-25 17:53:18
【问题描述】:

这是一个两部分的问题。 我正在使用 NSXMLParser 下载 RSS 提要。

NSURL *url = [NSURL URLWithString:@"linktorssxml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];

我想知道是否有一种方法可以简单地远程读取 xml 的标头并检查上次更新时间戳,这样我只需要运行解析器代码并在发生更改时实际提取整个 xml?

此外,正如我所说,这是一个由两部分组成的问题。 我对外部托管的 plist 有同样的想法。目前调用如下:-

_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]];

再一次,有没有办法远程检查标题的上次更新时间,因此只有在发生更改时才下载完整文件?

【问题讨论】:

    标签: ios nsxmlparser initwithcontentsofurl


    【解决方案1】:

    可以,但您需要使用NSURLConnectionNSURLSession 下载数据,而不是让NSXMLParser 为您下载。

    您可以通过使用 NSMutableURLRequest 来描述您想要的内容来获取 HTTP 标头(可能包括最后修改日期)。它有一个名为setHTTPMethod: 的方法,您可以将方法设置为HEAD。建立连接,获取标题,然后决定下一步做什么。

    除非 XML 非常大,否则这可能不是最有效的方法。如果文件已被修改,您只需发出第二个网络请求即可获取它。网络请求很慢,因此您应该将它们保持在最低限度。在大多数情况下,您最好使用NSURLConnectionNSURLSession 来获取文件。响应将包含 HTTP 标头,因此您仍然可以获得日期,并且您仍然可以决定是否运行解析器。

    【讨论】:

    • 非常感谢。您关于多个请求的观点是我对进行检查的担忧。谢谢你的建议。出于兴趣,NSURLConnection/NSURLSession 在提取数据方面是否比 NSXMLParser 更快?还是没有区别?
    • 没有区别。限制是建立网络连接所需的时间加上传输数据所需的时间。让NSXMLParser 获取数据更方便,但不会更快或更慢。
    • 再次感谢您。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多