AFNetWorking 源码粗浅理解

本文解析了AFNetworking库中网络请求的实现原理,包括2.0版本与3.0版本的不同调用方式,以及NSURLSession在网络请求中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近在看AFNetWorking的源码,整理出自己的一点思路。先从一个最简单的网络请求看:

    NSString *urlStr = [NSString stringWithFormat:@"http://baidu.com/1/1"];
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *dic = @{@"qq":@"1",@"uid":@"388"};
    
    [manager POST:urlStr parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    }];

  以上是AF最简单的一个POST请求。

  在生成manager的方法中 分别用到了以下几个类:

  1.AFURLRequestSerialization  2.AFURLResponseSerialization  3.AFSecurityPolicy  4.AFNetworkReachabilityManager

  1:设置请求头等参数 2:设置返回参数 3:网络安全的设置 4:监测网络连接状态   manager为默认初始化,所以以上状态是默认属性。

  以上是AF的初始化过程。在manager调用post方法时,做了以下操作:

  生成网络请求,并将网络操作添加到NSOperation的一个子类中 ---> AFHTTPRequestOperation 的一个实例中 , AFHTTPRequestOperation继承自AFURLConnectionOperation, 通过AFURLConnectionOperation类做网络请求,并通过监测AFOperationState属性状态来确定网络请求是否完成,最后通过Block回调传递参数。全过程是异步操作。

 

  总结:其中主要用到了  NSOperation异步操作以及NSURLConnection的代理方法,两者相结合,最后通过kvo监测operation的状态,调用Block完成网络请求的回调。

  以上为2.0以前调用方法。

   

   3.0以后新方法:

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSDictionary *dic = @{@"qq":@"1",@"uid":@"388"};
    
    [manager POST:urlStr parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];

 

  以上方法用NSURLSession方法来做网络请求,同比上述方法省去了对线程的操作。其中关于AFURLSessionManagerTaskDelegate这个类还待研究。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/jztsdwn/p/6377233.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值