Domanda

Questa è una domanda a due parti. Sto usando NSXMLParser per scaricare un feed RSS.

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

Mi chiedevo se c'è un modo per leggere semplicemente l'intestazione dell'XML da remoto e controllare l'ultimo aggiornamento TimeStamp, in modo da poter eseguire il codice parser e quindi tirare l'intero XML se c'è stata una modifica? .

Inoltre, come ho detto che questa è una domanda a due parti. Ho lo stesso pensiero con una plist che è ospitata esternamente.Questo è attualmente chiamato come segue: -

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

Ancora una volta, c'è un modo per controllare l'intestazione per l'ultimo tempo di aggiornamento da remoto, e quindi solo scaricando il file completo se c'è stato un cambiamento?

È stato utile?

Soluzione

Sì, ma è necessario utilizzare NSURLConnection o NSURLSession per scaricare i dati invece di chiedere NSXMLParser per farlo.

È possibile ottenere le intestazioni HTTP (che probabilmente includono un'ultima data modificata) utilizzando un NSMutableURLRequest per descrivere ciò che desideri.Che ha un metodo denominato setHTTPMethod: e puoi impostare il metodo su HEAD.Effettuare la connessione, prendi le intestazioni e decidi cosa fare dopo.

A meno che l'XML non sia molto grande, questo probabilmente non è l'approccio più efficace.Se il file è stato modificato, è necessario effettuare una seconda richiesta di rete per ottenerlo.Le richieste di rete sono lente, quindi dovresti tenerle al minimo.Nella maggior parte dei casi sarebbe meglio usare NSURLConnection o NSURLSession per ottenere il file.La risposta includerà le intestazioni HTTP, quindi hai ancora la data, e puoi comunque decidere se eseguire o meno il parser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top