Pergunta

Tenho um pequeno problema ao receber o conteúdo de um arquivo XML (usando o Touchxml).

Minha primeira consulta funciona muito bem, parece algo assim:

NSString *url = [NSString stringWithFormat:STATION_ID, latitude, longtitude];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@",rssParser);

Portanto, este log me dá o arquivo XML completo.

Depois disso, em outro método, estou tentando o mesmo:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@", rssParser);

Mas o log que estou recebendo é (nulo). Loggin the URL String me dá o URL certo sem espaços ou algo assim, o log de URL, por exemplo, se parece com o seguinte:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
NSLog(@"%@", url);

O resultado no console do depurador é

http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASUNNY19

Olhar para este arquivo com meu navegador parece estar bem. Alguém sabe o que está errado ?????

Eu também tentei, primeiro para obter o conteúdo deste URL pela StringWithContentsOfurl, mas isso também não funcionou.

Foi útil?

Solução

Esse cara estava tendo o mesmo problema: http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html. Parece que a API no Weather Underground está esperando um agente do usuário e retornando uma resposta de 500 HTTP quando não vê um. Você pode usar -initWithData:options:error: no cxmldocument para passar os dados que você obtém usando nsmutableurlRequest.

Outras dicas

Você deve tentar usar o argumento de erro do initWithContentsOfurl: Opções: Erro:. Crie um objeto NSerror *e passe -o assim:

NSError      *error;
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error: &error];

Se você não receber um objeto RSSParser, verifique esse erro.

Copiei o conteúdo desse arquivo XML para o meu próprio servidor e mudei o caminho da URL. Isso funciona correto, então acho que há um problema em ler este arquivo ".asp".

Hmm. Mas seu conteúdo XML, estranho.

// EDIT: Fiz um pequeno arquivo PHP no meu servidor que retorna o conteúdo do arquivo "ASP":

<?php
  echo file_get_contents("http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASANFR70");
 ?>

Ler o conteúdo do meu script funciona, mas essa solução alternativa não é o que eu quero.

oh maldito =/

Tem certeza de que sua sequência de URL está codificada corretamente, para que o ponto de interrogação seja interpretado como uma consulta? Você pode querer olhar para usar dataUsingEncoding ou stringUsingEncoding no seu URL antes de usá -lo para inicializar rssReader.

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