0

这是一个两部分的问题。我正在使用 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"]];

同样,有没有办法远程检查标题的最后更新时间,因此只有在发生更改时才下载完整文件?

4

1 回答 1

1

是的,但您需要使用NSURLConnectionNSURLSession下载数据,而不是要求NSXMLParser为您完成。

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

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

于 2014-04-11T16:52:06.493 回答