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];
    
  • 相关阅读:
    .net类库里ListView的一个BUG
    获取lable的caption, 摘抄还未测试可用否
    (转) lua实现split的简易方法
    2. SharePoint Online 开发,请联系qq512800530。加好备注。(不要发站内信。。。)
    1. android
    开发人员应关注的20个jQuery网站/博客
    Temp
    彩票项目开发节项
    求android ble 解决方案!
    自己开发的工作流引擎
  • 原文地址:https://www.cnblogs.com/chao8888/p/5600254.html
Copyright © 2011-2022 走看看