zoukankan      html  css  js  c++  java
  • GET/POST请求(NSURLSession)

    步骤

        使用NSURLSession创建task,然后执行task
    

    Task

        a.NSURLSessionTask是一个抽象类,本身不能使用,只能使用它的子类
        b.NSURLSessionDataTaskNSURLSessionUploadTaskNSURLSessionDownloadTask
    

    发送get请求

        //1.创建NSURLSession对象(单例对象)
        NSURLSession *session = [NSURLSession sharedSession];
        
        //2.根据NSURLSession对象创建一个Task
        
        NSURL *url = [NSURL URLWithString:@"http://zzk.cnblogs.com/Content/so.css?id=20140908"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        
        
        /*
         注意:该block是在子线程中调用的,如果拿到数据之后要做UI刷新,需回到主线程刷新
         第一个参数:需要发送的请求对象
         block:当请求结束拿到服务器响应的数据时调用block
         NSData:响应体
         NSURLResponse:响应信息,响应头,真实类型为NSHTTPURLResponse
         NSErroe:错误信息
         */
        NSURLSessionDataTask * dataTask =  [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) {
            
            //拿到响应头信息
            NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
            
            //4.解析拿到的响应数据
            NSLog(@"%@
    %@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields);
        }];
        
        //3.执行Task
        //注意:创建的task默认挂起状态,需执行
        [dataTask resume];
    

    发送get请求的第二种方式

      //注意:该方法内部默认会把URL对象包装成一个NSURLRequest对象(默认是GET请求)
    - (nullable NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error))completionHandler;
    

    发送POST请求

        //1.创建NSURLSession
        NSURLSession *session = [NSURLSession sharedSession];
        
        //2.根据NSURLSession创建Task
        NSURL *url = [NSURL URLWithString:@"http://zzk.cnblogs.com/Content/so.css"];
        
        //创建一个请求对象,设置请求方法为POST,把参数放在请求体中传递
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        request.HTTPMethod = @"POST";
        request.HTTPBody = [@"id=20140908" dataUsingEncoding:NSUTF8StringEncoding];
        
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) {
            //获取响应头信息
            NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
            
            //解析数据
            NSLog(@"%@
    %@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields);
        }];
        
        //3.执行Task
        [dataTask resume];
    
  • 相关阅读:
    修改mysql root用户密码(忘记密码)
    激活IDEA 2019.1
    数据库事务的4大特性与隔离级别
    使用HttpClient调用第三方接口
    SpringBoot使用logback自定义配置时遇到的坑 --- 在 /tmp目录下自动生成spring.log文件
    更新数据库中数据时出现: Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences 问题
    数值return ++ 的坑
    string整合Quartz定时器
    idea配置自动编译项目配置
    CASE WHEN 及 SELECT CASE WHEN的用法
  • 原文地址:https://www.cnblogs.com/chao8888/p/5600254.html
Copyright © 2011-2022 走看看