Pergunta

Esta é uma questão de duas partes.Estou usando o NSXMLParser para baixar um feed RSS.

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

Gostaria de saber se existe uma maneira de simplesmente ler o cabeçalho do xml remotamente e verificar o carimbo de data e hora da última atualização, de modo que eu só precise executar o código do analisador e realmente extrair o xml inteiro se houver uma alteração.

Além disso, como eu disse, esta é uma questão de duas partes.Tenho o mesmo pensamento com um plist hospedado externamente.Atualmente, isso é chamado da seguinte forma: -

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

Novamente, existe uma maneira de verificar remotamente o horário da última atualização no cabeçalho e, assim, baixar o arquivo completo apenas se houver uma alteração?

Foi útil?

Solução

Sim, mas você precisa usar NSURLConnection ou NSURLSession para baixar os dados em vez de perguntar NSXMLParser fazer isso por você.

Você pode obter os cabeçalhos HTTP (que provavelmente incluem a data da última modificação) usando um NSMutableURLRequest para descrever o que você deseja.Isso tem um método chamado setHTTPMethod:, e você pode definir o método como HEAD.Faça a conexão, obtenha os cabeçalhos e decida o que fazer a seguir.

A menos que o XML seja muito grande, essa provavelmente não é a abordagem mais eficaz.Se o arquivo foi modificado, você só precisará fazer uma segunda solicitação de rede para obtê-lo.As solicitações de rede são lentas, portanto, você deve reduzi-las ao mínimo.Na maioria dos casos, seria melhor usar NSURLConnection ou NSURLSession apenas para obter o arquivo.A resposta incluirá os cabeçalhos HTTP, para que você ainda obtenha a data e ainda possa decidir se deseja ou não executar o analisador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top