NSURLConnection发送网络请求

Posted dashengios

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSURLConnection发送网络请求相关的知识,希望对你有一定的参考价值。

 

 

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    

//    [self getYahooData];//同步请求,会阻塞主线程

//    [self getYahooData_GCD];//使用GCD把同步请求放在子线程中,也不会阻塞主线程

    [self getYahooData_Async];//直接使用异步请求,不会阻塞主线程+

}

 

-(void)getYahooData_Async

{

    NSLog(@"异步请求测试开始...");

    NSURL *url = [NSURL URLWithString:@"http://www.yahoo.com"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    

    NSLog(@"马上进行异步连接请求url的数据");

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {

        

        if (data.length > 0 && connectionError == nil) {

            NSLog(@"%lu字节的数据被返回",(unsigned long)data.length);

        }else if (connectionError == nil && data.length == 0)

        {

            NSLog(@"没有数据返回。。");

        }else if (connectionError != nil)

        {

            NSLog(@"返回错误");

        }

    }];

    NSLog(@"异步请求测试完成。。");

}

 

-(void)getYahooData_GCD

{

    NSLog(@"异步请求测试开始...");

    NSURL *url = [NSURL URLWithString:@"http://www.yahoo.com"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    

    NSLog(@"马上进行异步连接请求url的数据");

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(queue, ^{

        

        NSURLResponse *response = nil;

        NSError *error = nil;

       

        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

        

        if (data.length > 0 && error == nil) {

            NSLog(@"%lu字节的数据被返回",(unsigned long)data.length);

        }else if (error == nil && data.length == 0)

        {

            NSLog(@"没有数据返回。。");

        }else if (error != nil)

        {

            NSLog(@"返回错误");

        }

    });

    

    NSLog(@"GCD测试完成。。");

}

 

-(void)getYahooData

{//同步请求,会阻塞主线程

    NSLog(@"同步请求测试开始...");

    NSURL *url = [NSURL URLWithString:@"http://www.yahoo.com"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    

    NSURLResponse *response = nil;

    NSError *error = nil;

    

    NSLog(@"马上进行同步连接请求url的数据");

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    

    if (data.length > 0 && error == nil) {

        NSLog(@"%lu字节的数据被返回",(unsigned long)data.length);

    }else if (error == nil && data.length == 0)

    {

        NSLog(@"没有数据返回。。");

    }else if (error != nil)

    {

        NSLog(@"返回错误");

    }

    NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);

    

}

以上是关于NSURLConnection发送网络请求的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发网络篇--NSURLConnection

ios开发网络学习:一:NSURLConnection发送GET,POST请求

iOS开发网络篇—NSURLConnection基本使用

iOS开发网络篇—NSURLConnection基本使用

NSURLConnection使用

NSURLSession与NSURLConnection区别