Question

C'est une question en deux parties.J'utilise NSXMLParser pour télécharger un flux RSS.

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

Je me demandais s'il existait un moyen de simplement lire l'en-tête du fichier XML à distance et de vérifier l'horodatage de la dernière mise à jour, de sorte que je n'aie qu'à exécuter le code de l'analyseur et à extraire l'intégralité du fichier XML s'il y a eu un changement ?

De plus, comme je l’ai dit, il s’agit d’une question en deux parties.J'ai la même pensée avec un plist hébergé en externe.Ceci s'appelle actuellement comme suit: -

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

Encore une fois, existe-t-il un moyen de vérifier à distance l'en-tête pour connaître l'heure de la dernière mise à jour, et ainsi de télécharger le fichier complet uniquement en cas de modification ?

Était-ce utile?

La solution

Oui, mais vous devez utiliser NSURLConnection ou NSURLSession télécharger les données au lieu de demander NSXMLParser pour le faire pour vous.

Vous pouvez obtenir les en-têtes HTTP (qui incluent probablement une date de dernière modification) en utilisant un NSMutableURLRequest pour décrire ce que vous voulez.Cela a une méthode nommée setHTTPMethod:, et vous pouvez définir la méthode sur HEAD.Établissez la connexion, récupérez les en-têtes et décidez quoi faire ensuite.

À moins que le XML ne soit très volumineux, ce n’est probablement pas l’approche la plus efficace.Si le fichier a été modifié, il vous suffira de faire une deuxième requête réseau pour l'obtenir.Les requêtes réseau sont lentes, vous devez donc les réduire au minimum.Dans la plupart des cas, il serait préférable d'utiliser NSURLConnection ou NSURLSession pour simplement récupérer le fichier.La réponse inclura les en-têtes HTTP, vous obtiendrez donc toujours la date et vous pourrez toujours décider d'exécuter ou non l'analyseur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top