zoukankan      html  css  js  c++  java
  • 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请求代码

    代码执行结果:

  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/evening015/p/5317848.html
Copyright © 2011-2022 走看看