2010-01-23 67 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字符串给了我无空格或某事的正确网址,该网址登录,例如看起来是这样的:

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

在调试器控制台的结果是

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

看着这个文件,我的浏览器似乎没问题。任何人都知道什么是错的?????

我也尝试过,首先通过stringWithContentsOfURL获取这个URL的内容,但是这也不起作用。

回答

2

这家伙有同样的问题:http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html。看起来Weather Underground的API期望有一个用户代理,并在它没有看到一个响应时返回一个500 HTTP响应。你可以在CXMLDocument上使用-initWithData:options:error:来传递你使用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

嗯错误对象是: “错误:操作无法完成。(Cocoa error 256.)” – choise

+0

错误的userInfo字典中的任何信息? –

+0

你的意思是[error userInfo]?在那里有:“{NSURL = http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID = KCASUNNY19; }“ – choise

0

我将这个xml文件的内容复制到我自己的服务器上,并更改了url路径。 这工作正确,所以我认为读这个“.asp”文件有问题。

hmm。但其XML内容很奇怪。

//编辑: 我在我的服务器上,返回“ASP”文件的内容有点php文件:

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

阅读我的脚本工作内容,但这种解决方法是不是有什么我想要。

哦该死=/

0

你确定你的URL字符串被正确编码,从而使问号被解释为一个查询?您可能想要在使用dataUsingEncodingstringUsingEncoding之前先使用URL来初始化rssReader

+0

yeah id尝试了几次,首先用一个编码的url字符串(它没有任何作用,因为在这个url中没有任何编码),然后用一个NSString contentfromurl使用编码(我累了ascii和utf8) – choise