2010-01-23 151 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