基本的HTTP请求,POST请求

network | | 访问(47)
// 创建一个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];
    }
}];