お手軽にWEBからデータを取得したい
NSString#stringWithContentsOfURL:usedEncoding:error:メソッドを利用すればWEBからお手軽にデータを取得できます。
NSURL *url = [NSURL URLWithString:@"http://example.com"]; NSStringEncoding usedEncoding; NSError *error; NSString *result = [NSString stringWithContentsOfURL:url usedEncoding:&usedEncoding error:&error]; if (result == nil) { NSLog(@"error: %@", error); } else { NSLog(@"used encoding: %d", usedEncoding); NSLog(@"result: %@", result); }
データの取得に失敗した場合はnilが返されます。
取得したデータの文字コードはサーバが返すレスポンスから自動的に判別されて、引数usedEncodingにセットされます。また、指定したURLからのデータの取得に失敗したり、文字コードの判別に失敗した場合には引数errorにエラーオブジェクトがセットされます。
エラーに興味がない場合にはerrorにNULLを渡してもOK。
NSURL *url = [NSURL URLWithString:@"http://example.com"]; NSStringEncoding usedEncoding; NSString *result = [NSString stringWithContentsOfURL:url usedEncoding:&usedEncoding error:NULL];
また、サーバのレスポンスからどうしても文字コードが判別できない場合にはNSString#stringWithContentsOfURL:encoding:error:メソッドを利用してユーザが明示的に文字コードを指定することができます。
NSURL *url = [NSURL URLWithString:@"http://www.linux.or.jp"];
NSStringEncoding encoding = NSISO2022JPStringEncoding;
NSError *error;
NSString *result = [NSString stringWithContentsOfURL:url encoding:encoding error:&error];