NSURLConnection (同期)

NSURLConnectionを使ってURLからデータを同期的に取得する方法です。 簡単に作る場合には同期的な手法を使うのが楽です。

しかし、同期的な手法はAPIがブロックしてしまったり、大きなデータ取得には適さないなどの問題点があり、非同期で取得する方法の方が一般的になると思われるのでご注意下さい。

サンプルコード

URLを指定した同期的なデータ取得サンプルを以下に示します。


#import <Cocoa/Cocoa.h>

int
main()
{
  id pool = [[NSAutoreleasePool alloc] init];

  // URL部分を変更して下さい
  NSURL *url = [NSURL URLWithString:@"http://www.example.com/"];

  // URL Request
  NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

  // 結果を格納するオブジェクト
  NSURLResponse *resp;

  // エラーを格納するオブジェクト
  NSError *err;

  // 同期的な呼び出し。sendSynchronousRequestを使っているのが特徴です
  NSData *result = [NSURLConnection sendSynchronousRequest:req
                      returningResponse:&resp
                      error:&err];

  // 結果をコンソールへ出力。writeはCのシステムコールです
  write(1, [result bytes], [result length]);

  [pool release];
}