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]; } } }