iOS-->使用NSURLSession发送请求的基本方式

作者: 奕十八 | 来源:发表于2016-07-19 13:26 被阅读768次
    xcode.png

    NSURLSession

    用NSURLSession发送Get请求的三种方式

    第一种:

    -(void)request1{
       //创建请求路径
       NSURL *url=[NSURL URLWithString:@"http://XXXXXXX/login?username=wujian&pwd=wujian&type=JSON"];
       //创建请求对象
       NSURLRequest *request=[NSURLRequest requestWithURL:url];
    
       //创建会话对象
       NSURLSession *session=[NSURLSession sharedSession];
       //根据会话对象来创建请求任务  任务中的代码块默认在子线程中执行
       NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
           NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
       }];
       //执行任务(发送请求)
       [dataTask resume];
    }
    

    第二种:

    -(void)request2{
        //创建请求路径
        NSURL *url=[NSURL URLWithString:@"http://XXXXXX/login?username=wujian&pwd=wujian&type=JSON"];
    
        //创建会话对象
        NSURLSession *session=[NSURLSession sharedSession];
    
        //根据会话对象创建请求任务
        NSURLSessionDataTask *dataTask=[session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
            NSLog(@"%@",[NSThread currentThread]);
        }];
        [dataTask resume];
    
    }
    

    第三种:

    -(void)request3{
        //创建请求路径
        NSURL *url=[NSURL URLWithString:@"http://1XXXXXX/login?username=wujian&pwd=wujian&type=JSON"];
        //创建请求对象
        NSURLRequest *requeset=[NSURLRequest requestWithURL:url];
    
        //创建会话对象  这里的队列如果传nil,则是在子线程中执行
        NSURLSession *session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
    
        //根据会话对象创建请求任务
    
        NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:requeset];
        [dataTask resume];
    
    }
    //当接收到来自服务器响应的时候调用
    -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler{
    
        self.data=[NSMutableData data];
        //告诉系统如何处理从服务器返回的数据
        completionHandler(NSURLSessionResponseAllow);
    
    }
    //当接收到从服务器返回的数据的时候调用
    -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{
        //拼接接收到的数据
        [self.data appendData:data];
    
    }
    //当请求完成或者出错的时候调用
    -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
        NSLog(@"%@",[[NSString alloc]initWithData:self.data encoding:NSUTF8StringEncoding]);
    }
    

    使用NSURLSession发送Post请求

    -(void)post{
        //获取请求路径
        NSURL *url=[NSURL URLWithString:@"http://XXXXX/login"];
        //创建可变的请求对象
        NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
        //设置请求方法
        request.HTTPMethod=@"POST";
        //设置参数:请求体
        request.HTTPBody=[@"username=wujian&pwd=wujian&type=JSON"dataUsingEncoding:NSUTF8StringEncoding];
    
        //创建会话对象
        NSURLSession *session=[NSURLSession sharedSession];
    
        //根据会话对象来创建请求任务
        NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
            NSLog(@" %@",[NSThread currentThread]);
        }];
    
        //提交请求
        [dataTask resume];
    
    }
    

    相关文章

      网友评论

        本文标题:iOS-->使用NSURLSession发送请求的基本方式

        本文链接:https://www.haomeiwen.com/subject/vlvmjttx.html