• 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];
    
  • 相关阅读:
    Flink (一)概述
    【转】你未必知道的49个CSS知识点
    【转】清除浮动的四种方式及其原理理解
    前端知识总结
    【转】CSS为什么这么难学?方法很重要!
    【转】chrome开发者工具各种骚技巧
    【ASP.NET Core】设置Web API 响应的数据格式——Produces 特性篇
    【ASP.NET Core】绑定到 CancellationToken 对象
    【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇
    【ASP.NET Core】MVC 控制器的模型绑定(宏观篇)
  • 原文地址:https://www.cnblogs.com/chao8888/p/5600254.html
Copyright © 2020-2023  润新知