NSURLSession的GET和POST请求基本使用

简介:因为在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。

所以在此介绍如何使用NSURLSession来发送GET请求和POST请求。

 使用步骤:

      1)确定请求路径

    2)创建请求对象(POST请求需要修改请求方法和设置请求体)

    3)创建会话对象(NSURLSession)

    4)根据会话对象创建请求任务(NSURLSessionDataTask)

    5)执行Task

    6)当得到服务器返回的响应后,解析数据

GET请求代码:

 
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    /* 登录接口说明:http://127.0.0.1/login/login.php  是一个登陆接口,若传入的参数正确
     则返回{"userId":1,"userName":"zhangsan"}的JSON数据
     */
    
    //GET请求将参数拼接在 url 后面
    
    //网络接口 和 参数 以 ? 分隔. 参数和参数之间以 & 符号分隔.注意删除最后一个 & 符号.
    //如:http://127.0.0.1/login.php?username=zhangsan&password=zhang
    
    
    // NSUrlSession 的使用步骤:
    
    // 1.实例化网络会话.
    NSURLSession *session = [NSURLSession sharedSession];
    
    // 2.根据网络会话,实例化网络任务.
    // 网络任务: 三种: 普通/上传/下载
    
    // NSURLSessionDataTask :普通网络任务.
    // 如果是GET 请求,可以直接根据 url 实例化网络任务.
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php?username=zhangsan&password=zhang"];
    /*
     第一个参数:请求路径:内部会自动将路径包装成请求对象
     第二个参数:completionHandler回调(请求完成【成功|失败】的回调)
     data:响应体信息(期望的数据)
     response:响应头信息,主要是对服务器端的描述
     error:错误信息,如果请求失败,则error有值
     */
    NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 默认是子线程.
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        
    }];
    
    // 3.开启网络任务.
    [task resume];
    
}

POST请求代码:

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    /* 登录接口说明:http://127.0.0.1/login/login.php  是一个登陆接口,若传入的参数正确
     则返回{"userId":1,"userName":"zhangsan"}的JSON数据
     */
    
    //注意:POST请求将参数添加在请求体中
    
    
    // NSUrlSession 的使用步骤:
    
    // 1.实例化网络会话.
    NSURLSession *session = [NSURLSession sharedSession];
    
    // 2.根据网络会话,实例化网络任务.
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php"];
    
    //3.创建可变请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //4.设置请求体
    request.HTTPBody = [@"username=zhangsan&password=zhang" dataUsingEncoding:NSUTF8StringEncoding];
    
    //5..设置请求方法:
    request.HTTPMethod = @"POST";
    
    /*
     第一个参数:请求对象
     第二个参数:completionHandler回调(请求完成【成功|失败】的回调)
     data:响应体信息(期望的数据)
     response:响应头信息,主要是对服务器端的描述
     error:错误信息,如果请求失败,则error有值
     */
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 默认是子线程.
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        
    }];
    
    // 3.开启网络任务.
    [task resume];
    
}

代码执行结果:

猜你喜欢

转载自www.linuxidc.com/Linux/2016-04/129797.htm