iOS中POST請求的發送需要使用NSMutableURLRequest可以設置URL request的頭字段,比如超時時間,請求類型:GET POST等一些關鍵頭字段:
- (IBAction)login {
// 1.用戶名
NSString *usernameText = self.username.text;
if (usernameText.length == 0) {
[MBProgressHUD showError:@”請輸入用戶名”];
return;
}
// 2.密碼
NSString *pwdText = self.pwd.text;
if (pwdText.length == 0) {[MBProgressHUD showError:@"請輸入密碼"];return;
}// 增加蒙板
[MBProgressHUD showMessage:@"正在拼命登錄中...."];// 3.發送用戶名和密碼給服務器(走HTTP協議)
// 創建一個URL : 請求路徑
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/login"];// 創建一個請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 5秒后算請求超時(默認60s超時)
request.timeoutInterval = 15;request.HTTPMethod = @"POST";
// 設置請求體
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];
// NSString --> NSData
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];// 設置請求頭信息
[request setValue:@"iPhone 6" forHTTPHeaderField:@"User-Agent"];// 發送一個同步請求(在主線程發送請求)
// queue :存放completionHandler這個任務
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {// 隱藏蒙板[MBProgressHUD hideHUD];
// NSHTTPURLResponse resp = (NSHTTPURLResponse )response;
// NSString *msg = [NSHTTPURLResponse localizedStringForStatusCode:resp.statusCode];
// NSLog(@”%d %@ %@”, resp.statusCode, msg, resp.allHeaderFields);
// 這個block會在請求完畢的時候自動調用if (connectionError || data == nil) { // 一般請求超時就會來到這[MBProgressHUD showError:@"請求失敗"];return;}// 解析服務器返回的JSON數據NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSString *error = dict[@"error"];if (error) {// {"error":"用戶名不存在"}// {"error":"密碼不正確"}[MBProgressHUD showError:error];} else {// {"success":"登錄成功"}NSString *success = dict[@"success"];[MBProgressHUD showSuccess:success];}}];
}