2014-04-11 101 views
0

這是一個兩部分問題。 我正在使用NSXMLParser下載RSS源。iOS下載前檢查遠程文件是否有更新

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"]]; 

再次,是否有遠程檢查最後更新時間頭的一種方式,因此只下載完整的文件,如果出現了變化?

回答

1

是的,但您需要使用NSURLConnectionNSURLSession來下載數據,而不是要求NSXMLParser爲您做。

通過使用NSMutableURLRequest來描述您想要的內容,您可以獲得HTTP標頭(可能包含最後修改日期)。這有一個名爲setHTTPMethod:的方法,您可以將方法設置爲HEAD。建立連接,獲取標題,然後決定下一步做什麼。

除非XML非常大,否則這可能不是最有效的方法。如果該文件已被修改,則只需發出第二個網絡請求即可獲取該文件。網絡請求很慢,所以你應該把它們保持在最低限度。在大多數情況下,最好使用NSURLConnectionNSURLSession來獲取文件。響應將包含HTTP標頭,因此您仍然可以獲取日期,並且您仍然可以決定是否運行解析器。

+0

非常感謝。你關於多次請求的觀點是我關心檢查的一個問題。感謝您的建議。出於興趣,NSURLConnection/NSURLSession比NSXMLParser更快拉動數據嗎?還是沒有區別? – MrNeilM

+0

沒有區別。限制是建立網絡連接需要多長時間,以及傳輸數據需要多長時間。讓'NSXMLParser'獲得數據更方便,但不會更快或更慢。 –

+0

再次感謝。感謝你的幫助。 – MrNeilM