NSURLConnection* connection = [NSURLConnectionこれが、非同期通信を行っている部分です。引数には、NSURLRequestと、デリゲートクラスのインスタンスが渡されています(デリゲートクラスは、ごく当たり前にallocしてinitしてautoreleaseしてインスタンスを作っています)。通信そのものは、これでおしまいです。後はNSURLConnectionが適当にやってくれるんですから。
connectionWithRequest:request delegate:delegate];
- (void)connection:(NSURLConnection *)connectionまずは、レスポンスが返ってきたときの処理です。ここで、NSMutableDataインスタンスを作成し初期化しています。データ受信のための準備を行っているわけですね。
didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connectionこれは、データを受信したときの処理でした。ここでは、NSMutableDataの「appendData:」というメソッドを呼び出して、受け取ったデータを追加しています。このメソッドでは、接続しているNSURLConnectionと、受け取ったデータが保管されているNSDataがそれぞれ引数として渡されます。このNSDataを、インスタンス変数のNSMutableDataに追加していくわけです。
didReceiveData:(NSData *)data
- (void)connectionDidFinishLoading:通信完了時の処理です。ここでは、インスタンス変数のNSMutableDataをNSLogで出力しています。ここでは単にそのまま書き出しているだけですが、必要に応じてNSDataからNSStringに戻したり、あるいは受け取ったデータをファイルに保存したりといった処理も、ここで行えばよいでしょう。
(NSURLConnection *)connection
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
#import <Foundation/Foundation.h> // デリゲートクラスの宣言 @interface SampleConnectDelegate : NSObject { NSMutableData* result; } @end // デリゲートクラスの実装 @implementation SampleConnectDelegate - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { result = [[NSMutableData alloc] init]; } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [result appendData:data]; } - (void)connectionDidFinishLoading: (NSURLConnection *)connection { NSLog(@"%@",result); } @end // メイン関数 int main (int argc, const char * argv[]) { @autoreleasepool { NSString* address = @"http://www.apple.com/"; NSURL* url = [NSURL URLWithString:address]; NSURLRequest* request = [NSURLRequest requestWithURL:url]; SampleConnectDelegate* delegate = [[SampleConnectDelegate alloc] init]; NSURLConnection* connection = [NSURLConnection connectionWithRequest:request delegate:delegate]; if (!connection) { NSLog(@"Error..."); } // 終了しないようにしておく [[NSRunLoop currentRunLoop] run]; } return 0; }
<< 前へ |