今回、マイコミの「実践! iPhoneアプリ開発」の記事を参考にiPhoneからアメブロサーバーにRSSデータ要求してみます。


$テン・シー・シー-1

wiki:RSS

 なのでCFNetwork使いません。
 かわりにNSURLConnection使います。

 RSSデータ?な人は、SafariならツールバーのURL入力ボックスの左側に出てるRSSてボタンをクリックしてみましょう。

$テン・シー・シー-2
こいつをクリックだ

 iPhoneやWindows IEな人はブログ右下にある『XML RSS 1.0』か『XML RSS 2.0』をクリックね。ただしWindows IEはVersion 7以降でないと別アプリが必要になるみたいです。FireFoxは触ってないので不明。たぶんSafariと同じで簡単と思うんだけど...

$テン・シー・シー-4

 したら、こんな感じの画面がでたと思います。

$テン・シー・シー-3

 見たとおり、ブログの更新情報の配信データなわけです。
 整形された状態は見てのとおりですが、送られてくる加工前のRSSデータを見てみようというのが今回のお題です。
 そんなんSafariの表示>ソースを表示メニューで一発じゃないっすか?と思った人もいるんじゃないかと思いますが、実はそいつは既に加工済みのソースなんですな。

 ま、とにもかくにもプロジェクト作成から。
 ファイル>新規プロジェクトメニューで表示される新規プロジェクトダイアログでNavigation-based Applicationを選択。

$テン・シー・シー-5

 今回、別にWindow-Baseで十分なんですが、ちょっと後々の事考えてNavigation-basedです。
 デスクトップにrssという名前で作成します。

$テン・シー・シー-6

 そのままビルドして実行させるとこんな感じ。

$テン・シー・シー-7

 UITableView使ってますな。とりあえず、今回はこっちに用はありません。
 終了して、まずはプロジェクトのrssAppDelegate.mに手を入れましょう。
 applicationDidFinishLaunchingメソッドの変更と以下のconnectionというメソッドを追加します。


- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
// URLを指定する
NSURLRequest* request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://rssblog.ameba.jp/xcc/rss20.xml"]];
// URLコネクションを作る
[NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection*)connection
didReceiveData:(NSData*)data
{
char* p = (char*)[data bytes];
int len = [data length];
while (len-- > 0) {
putchar(*p++);
}
}


 で、コンソールを表示させた状態(実行>コンソールメニュー)でビルドして実行!
 なんかいっぱいコンソールに出ましたか~?

$テン・シー・シー-8

 これがアメブロから返されるRSSデータ原文ちゅーわけです。
 なんで、これが、こうなる?

$テン・シー・シー-9

 そこんとこ以下次回。

------------
サンプルプロジェクト:rss.zip