iOS网络编程(二):NSURLConnection介绍

NSURLConnection在iOS7之后基本被NSURLSession,但为了兼容,有必要学习一下。

网络请求分为同步和异步两种:

  • 同步是指在请求结果返回之前,程序代码会卡在请求处,之后的代码不会被执行,请求返回结果后,之后的代码再执行。
  • 异步是指在发送请求之后,一边在子线程中接收返回数据,一边执行之后的代码,当返回数据接收完毕后,采用回调的方式通知主线程做处理。

一、NSURLConnection同步请求

// 同步
- (void)tongbu {
    NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSLog(@"%@",data);
    NSLog(@"继续执行");
}

而、NSURLConnection异步请求

  1. block方式的异步请求
// block的异步
- (void)yibu {
    NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    //其中的queue参数决定block中的代码在哪个队列中执行
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        NSLog(@"%@",data);
    }];
    NSLog(@"继续执行");
}
  1. 代理回调方式的异步请求
    采用协议和声明一个用户接受数据的可变NSData:
@interface ViewController ()<NSURLConnectionDataDelegate>
{
    NSMutableData * _data;
}

请求代码:

// 代理回调的异步
- (void)yibu_delegate {
    _data = [[NSMutableData alloc]init];
    NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    [NSURLConnection connectionWithRequest:request delegate:self];
}

实现代理方法:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    //开始接收数据
    [_data setLength:0];
    NSLog(@"%s","开始接收数据");
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    //正在接收数据
    [_data appendData:data];
    NSLog(@"%s","正在接收数据");
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    //接收数据失败
    NSLog(@"%@",error);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    //接收数据完成
    NSLog(@"%@",_data);
}

代码:NSURLConnection

参考:iOS网络编程之三——NSURLConnection的简单使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容