Не удается прочитать XML-файл - PullRequest
3 голосов
/ 23 января 2010

возникла небольшая проблема с получением содержимого 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);

но журнал, который я получаю, равен (null). Loggin URL String дает мне правильный URL без пробелов или чего-то еще, например, журнал URL выглядит так:

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

Результат в консоли отладчика:

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

просмотр этого файла в моем браузере выглядит нормально. Кто-нибудь знает, что происходит не так ?????

Я также пытался сначала получить содержимое этого URL-адреса с помощью stringWithContentsOfURL, но это также не сработало.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2010

У этого парня возникла та же проблема: http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html. Похоже, API в Weather Underground ожидает агента пользователя и возвращает HTTP-ответ 500, когда он его не видит. Вы можете использовать -initWithData:options:error: в CXMLDocument для передачи данных, которые вы получаете, используя NSMutableURLRequest.

0 голосов
/ 23 января 2010

Я скопировал содержимое этого XML-файла на свой сервер и изменил путь URL. это работает правильно, так что я думаю, что есть проблема с чтением этого файла .asp.

гм. но его содержание XML, странно.

// редактировать: я сделал небольшой php-файл на моем сервере, который возвращает содержимое файла "asp":

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

чтение содержимого моего скрипта работает, но этот обходной путь не тот, который я хочу.

о блин = /

0 голосов
/ 26 января 2010

Вы уверены, что строка URL правильно закодирована, так что знак вопроса интерпретируется как запрос? Возможно, вы захотите использовать dataUsingEncoding или stringUsingEncoding в своем URL, прежде чем использовать его для инициализации rssReader.

0 голосов
/ 23 января 2010

Вы должны попытаться использовать аргумент ошибки initWithContentsOfURL: options: error :. Создайте объект NSerror * и передайте его следующим образом:

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

Если вы не получили объект rssParser, проверьте эту ошибку.

...