• NSURLSession的GET和POST请求基本使用


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

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

    后续又将其封装起来,方便以后可以通过一个方法实现所有过程!!http://www.cnblogs.com/evening015/p/5321673.html

     使用步骤:

          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];
        
    }
    GET请求代码

    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];
        
    }
    POST请求代码

    代码执行结果:

  • 相关阅读:
    纯CSS实现垂直居中的几种方法
    用定位实现机器人效果
    Java 集合 HashMap & HashSet 拾遗
    Java 集合 持有引用 & WeakHashMap
    Java 泛型 通配符类型
    多线程threading 的使用
    mysql 数据库的设计三范式
    python 排序算法
    Python 中的单例模式
    mysql 数据库引擎
  • 原文地址:https://www.cnblogs.com/evening015/p/5317848.html
Copyright © 2020-2023  润新知