ios NSURLConnectionで非同期で通信する
最近ひどくアレな感じなので、iosアプリを作ろうと思います。
非同期通信を実装した時のメモ。
いろいろライブラリなどもあるようなのですが、
どれがいいのかわからなかったのでとりあえず標準のNSURLConnectionクラスをつかってみました。
公式ドキュメントは下記。
https://developer.apple.com/jp/devcenter/ios/library/documentation/URLLoadingSystem.pdf
流れ的には、
・リクエスト生成
・リクエスト実行
・各種デリゲートメソッド用意して、各々処理
//リクエスト生成 NSURL *url = [NSURL URLWithString:@"https://hogr.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; receivedData = [NSMutableData dataWithCapacity: 0]; //リクエスト実行 NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; if (!connection) { NSLog(@"ERORR"); receivedData = nil; } - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { // 受信にに備え初期化 [receivedData setLength:0]; } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { NSLog(@"ADDING_DATA"); // データを追加 [receivedData appendData:data]; } - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"ERROR"); } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]); NSLog(@"FIN"); NSLog(@"data: \n%@", [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]); }
感謝致します。