Невозможно прочитать XML-файл
-
22-09-2019 - |
Вопрос
возникла небольшая проблема с получением содержимого XML-файла (с использованием TouchXML).
Мой первый запрос работает очень хорошо, выглядит примерно так:
NSString *url = [NSString stringWithFormat:STATION_ID, latitude, longtitude];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@",rssParser);
поэтому этот журнал дает мне полный XML-файл.
после этого в другом методе я пробую то же самое:
NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@", rssParser);
но журнал, который я получаю, равен (ноль).Войдя в строку URL-адреса, я получаю правильный URL-адрес без пробелов или чего-то еще. Например, журнал URL-адресов выглядит так:
NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
NSLog(@"%@", url);
Результат в консоли отладчика:
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASUNNY19
просмотр этого файла в моем браузере кажется нормальным.Кто-нибудь знает, что происходит?????
Я также попытался сначала получить содержимое этого URL-адреса с помощью stringWithContentsOfURL, но это тоже не сработало.
Решение
У этого парня была такая же проблема: http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html.Похоже, API в Weather Underground ожидает пользовательский агент и возвращает HTTP-ответ 500, когда его не видит.Вы можете использовать -initWithData:options:error:
в CXMLDocument для передачи данных, которые вы получаете с помощью NSMutableURLRequest.
Другие советы
Вам следует попробовать использовать аргумент ошибки initWithContentsOfURL:options:error:.Создайте *объект NSerror и передайте его следующим образом:
NSError *error;
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error: &error];
Если вы не получили объект rssParser, проверьте эту ошибку.
я скопировал содержимое этого XML-файла на свой сервер и изменил URL-путь.это работает правильно, поэтому я думаю, что есть проблема с чтением этого файла ".asp".
хм.но его XML-содержимое странно.
//редактировать:я создал на своем сервере небольшой php-файл, который возвращает содержимое файла «asp»:
<?php
echo file_get_contents("http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASANFR70");
?>
чтение содержимого моего сценария работает, но этот обходной путь — не то, что мне нужно.
ох блин =/
Вы уверены, что ваша строка URL-адреса правильно закодирована, поэтому вопросительный знак интерпретируется как запрос?Возможно, вы захотите использовать dataUsingEncoding
или stringUsingEncoding
на вашем URL-адресе, прежде чем использовать его для инициализации rssReader
.