お手軽に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];