注意,不需要为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];
}