3

(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);

しかし、取得するログは(null)です。URL 文字列をログに記録すると、スペースなどを含まない正しい URL が得られます。たとえば、URL ログは次のようになります。

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

デバッガコンソールの結果は

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

このファイルをブラウザで見るのは問題ないようです。誰が何がうまくいかないのか知っていますか?????

また、最初に stringWithContentsOfURL でこの URL のコンテンツを取得しようとしましたが、これもうまくいきませんでした。

4

4 に答える 4

2

この男は同じ問題を抱えていました: http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html。Weather Underground の API はユーザー エージェントを期待しているようで、見つからない場合は 500 HTTP 応答を返します。CXMLDocument を使用-initWithData:options:error:して、NSMutableURLRequest を使用して取得したデータを渡すことができます。

于 2010-02-02T17:36:52.360 に答える
0

initWithContentsOfURL:options:error: の error 引数を使用してみてください。NSerror * オブジェクトを作成し、次のように渡します。

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

rssParser オブジェクトを取得できない場合は、そのエラーを確認してください。

于 2010-01-23T13:24:41.340 に答える
0

この xml ファイルの内容を自分のサーバーにコピーし、URL パスを変更しました。これは正しく動作するので、この「.asp」ファイルの読み取りに問題があると思います。

うーん。しかし、その XML コンテンツは奇妙です。

//編集: "asp" ファイルの内容を返す小さな php ファイルをサーバー上に作成しました:

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

私のスクリプトの内容を読むことはできますが、この回避策は私が望むものではありません。

くそー=/

于 2010-01-23T14:14:53.133 に答える
0

疑問符がクエリとして解釈されるように、URL 文字列が適切にエンコードされていることを確認してください。URL を使用して初期化する前に、URL の使用を確認することをおdataUsingEncoding勧めします。stringUsingEncodingrssReader

于 2010-01-26T03:06:12.517 に答える