2010-01-23 3 views
3

получил небольшую проблему с получением содержимого XML-файла (с помощью TouchXML).Невозможно прочитать XML-файл

Мой первый запрос работает очень хорошо, выглядит примерно так:

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, но это также не сработало.

ответ

2

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

+0

Удивительно, но это печально, я теперь использую другой API для моей информации о погоде :(но в следующий раз: D – choise

0

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

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

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

+0

hmm объект ошибки: Ошибка: операция не может быть завершена. (Cocoa error 256.) " – choise

+0

любая информация в словаре пользовательской информации об ошибке? –

+0

Вы имеете в виду [error userInfo]? в нем есть: "{ NSURL = http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID = KCASUNNY19; } – choise

0

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

hmm. но его XML-контент, странно.

// редактировать: я сделал небольшой файл PHP на моем сервере, который возвращает содержимое файла «АСП»:

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

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

ой блин =/

0

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

+0

Да, я пробовал это несколько раз, сначала с кодированной строкой url (которая не имела никакого эффекта, потому что в этом URL-адресе ничего не кодировать), а затем с помощью NSString contentfromurl с использованием кодировки (я устал ascii и utf8). – choise

Смежные вопросы