• 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];
    
  • 相关阅读:
    软件升级细节卸载删除快捷方式等前需要检测
    安装gitlab的总结
    如何修改vagrant系统的root用户密码
    写一个PHP单例模式
    redis使用笔记
    mysql 删除商品名字重复数据,同时保留最新一条
    杀死僵尸进程
    Django 用户状态管理,认证,失效
    关于iOS多任务的一些扫盲
    ajax异步
  • 原文地址:https://www.cnblogs.com/chao8888/p/5600254.html
Copyright © 2020-2023  润新知