iOS中使用NSURLConnection处理HTTP同步与异步请求

2020-01-15 17:01:48刘景俊

    if ([data length] > 0 && error == nil) { 
        NSLog(@"%lu bytes of data was returned.",(unsigned long)[data length]); 
    }else if([data length] == 0 && error == nil){ 
        NSLog(@"No data was return."); 
    }else if (error != nil){ 
        NSLog(@"Error happened = %@",error); 
    } 
    NSLog(@"We are done."); 
     

/*
 |
 | as we know, it will chock main thread when we call sendSynchronousRequest on main thread,,,,change below
 |
 v
*/ 
//call sendSynchronousRequest on GCD pool 
-(void)fetchYahooData2_GCD{ 
    NSLog(@"We are here..."); 
    NSString *urlString = @"http://www.easck.com/>     NSLog(@"Firing synchronous url connection..."); 
    dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
    dispatch_async(dispatchQueue, ^{ 
        NSURL *url = [NSURL URLWithString:urlString]; 
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 
        NSURLResponse *response = nil; 
        NSError *error = nil; 
        NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
        if ([data length] > 0 && error == nil) { 
            NSLog(@"%lu bytes of data was returned.",(unsigned long)[data length]); 
        }else if ([data length] == 0 && error == nil){ 
            NSLog(@"No data was returned."); 
        }else if (error != nil){ 
            NSLog(@"Error happened = %@",error); 
        } 
    }); 
    NSLog(@"We are done."); 
 

查看运行输出结果,分别为:
synchronous download on main thread without GCD

iOS,NSURLConnection,HTTP