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

iOS-->使用NSURLSession发送请求的基本方式_第1张图片
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发送请求的基本方式)