GET/POST送信

最近プライベートでiPhoneアプリ作成しているので、メモ。

GETまたはPOST送信してAPIからの戻り値を判定するメソッド。
Objective-Cでは、BOOL値は一般的にYES,NOだそうですがtrue,falseでも問題無いです。

- (void)selectedLoginBtn:(id)sender
{
	if ([self.username.text length] == 0 || [self.password.text  length] == 0) {
		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ログイン失敗"
														message:@"ユーザ名またはパスワードが空です"
													   delegate:nil
											  cancelButtonTitle:nil
											  otherButtonTitles:@"OK",nil];
		alert.delegate = self;
		[alert show];
	} else {
		//ログイン情報をGETまたはPOSTで送信
		//ログイン成功ならtrue、ログイン失敗ならfalseがAPIから返る
		NSString *url = @"http://xoxoxoxoxoxo:8080/app/login";

		/* GET */
		//NSString *url         = @"http://xoxoxoxoxoxo:8080/app/login?username=takada&passward=yuichi";
		//NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];

		/* POST */
		NSString *keyValue = [NSString stringWithFormat:@"username=%@&passward=%@", self.username.text, self.password.text];
		NSData *post = [keyValue dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
		NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
		[request setURL:[NSURL URLWithString:url]];
		[request setHTTPMethod:@"POST"];
		[request setHTTPBody:post];

		NSData   *response    = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
		NSString *loginResult = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

		if ([loginResult boolValue]){
			NSLog(@"%@",@"ログイン成功です");
			// NSUserDefaultsに値を保存
			NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
			[defaults setBool:YES forKey:@"login"];  // ログイン
			[defaults synchronize];

			//設定画面へGO
			SettingTableViewController *settingTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"settingTableViewController"];
			[self.navigationController pushViewController:settingTableViewController animated:YES];        
		} else {
			NSLog(@"%@",@"ログイン失敗です");
			//ポップアップする
			UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ログイン失敗"
															message:@"ユーザ名またはパスワードが間違っています"
														   delegate:nil
												  cancelButtonTitle:nil
												  otherButtonTitles:@"OK",nil];
			alert.delegate = self;
			[alert show];
		}
	}
}