首先,由於AFNetworking中的AFHTTPClient class已經被取消了。改由使用AFHTTPRequestOperationManager 這個class。作法一樣,請見下述程式碼。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (IBAction)signUpBtn:(id)sender { | |
//將鍵盤縮回 | |
[_userIDTF resignFirstResponder]; | |
[_passwordTF resignFirstResponder]; | |
//判斷基本的認證結果 | |
if ([self validateAccount:_userIDTF.text] && [self validatePassword:_passwordTF.text]) { | |
//啟動一個hud | |
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; | |
//設定hud的顯示文字 | |
[hud setLabelText:@"connecting"]; | |
//取得userID及password | |
NSString *userID = _userIDTF.text; | |
NSString *password = _passwordTF.text; | |
//設定伺服器的根目錄 | |
NSURL *hostRootURL = [NSURL URLWithString:ServerApiURL]; | |
//設定POST的內容 | |
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"signUp", @"cmd", userID, @"userID", password, @"password", nil]; | |
//產生控制request的物件 | |
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc]initWithBaseURL:hostRootURL]; | |
//POST | |
[manager POST:@"api.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { | |
//request成功之後要做的事情 | |
//輸出response | |
NSLog(@"response:%@",responseObject); | |
NSDictionary *json = responseObject; | |
//取的api的key值,並輸出 | |
NSDictionary *apiResponse = [json objectForKey:@"api"]; | |
NSLog(@"apiResponse:%@",apiResponse); | |
//判斷signUp的key值是否等於success | |
NSString *result = [apiResponse objectForKey:@"signUp"]; | |
NSLog(@"result:%@",result); | |
if ([result isEqualToString:@"success"]) { | |
//顯示註冊成功 | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"success.png"]]; | |
[_statusLB setText:@"Status:sign up successed"]; | |
}else { | |
//顯示註冊失敗 | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"signUpFail.png"]]; | |
[_statusLB setText:@"Status:sign up fail"]; | |
} | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { | |
//request失敗要做的事情 | |
NSLog(@"request error:%@",error); | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"connectError.png"]]; | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
}]; | |
}else { | |
//基本認證失敗 | |
[_statusLB setText:@"validate fail"]; | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
} | |
} |
各位可以發現,除了AFHTTPClient被AFHTTPRequestOperationManager取代,並且宣告跟方法略有不同之外,其他是一模一樣的。
另外signIn的部份,就由讀者自行修改練習了。