用NSURLSession的delegate实现接收数据

来源:互联网 发布:wps2016数据分析在哪里 编辑:程序博客网 时间:2024/06/08 10:43

注意,不需要为task设定delegate。 在设定session的delegate时,task的delegate也一并设定为同一个了。

NSMutableData *mutableData;

-(void)btnAction{
    NSURLSession* session = [NSURLSession
                             sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
    //这个delegate即是session的delegate,也是task的delegate
                             delegate:self
                             delegateQueue:[NSOperationQueue mainQueue]
                             ];
    
    
    NSURLRequest* request= [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://baidu.com"]];
    NSURLSessionDataTask* task = [session dataTaskWithRequest:request];
    [task resume];
}

#pragma mark - NSURLSessionTaskDelegate

- (void)URLSession:(NSURLSession *)session
              task:(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
    NSLog(@"delegate task did complete");
    NSString* html = [[NSString alloc] initWithData:mutableData encoding:NSUTF8StringEncoding];   
}

- (void)URLSession:(__unused NSURLSession *)session
          dataTask:(__unused NSURLSessionDataTask *)dataTask
    didReceiveData:(NSData *)data
{
    if(!mutableData){
        mutableData = [NSMutableData new];
    }
    
    [mutableData appendData:data];
}
0 0
原创粉丝点击