AFNetworking的介绍与理解

来源:互联网 发布:淘宝店铺怎样刷信誉 编辑:程序博客网 时间:2024/05/20 10:20

1.       AFNetworking的介绍

  a)      这是一个适用于苹果平台开发的网络库,基于Foundation URL Loading System上进行了一套封装,并且提供了丰富且优美的API接口给使用者使用

  b)       从github上面的star数量(2.7W)来说,就知道它是又多么的受欢迎,可以说做苹果app开发,对于URL Session的编程是不可缺少的     

2.       AFNetWorking的版本说明

  a)       AFN2.0的使用要求:iOS6,Xcode5以上,基于NSURLConnection和NSURLSession构建。

  b)       AFN3.0的使用要求:iOS7以及Xcode7以上,删除了已废弃的的基于NSURLConnection的API,完全基于NSURLSession构建,降低了以后的维护负担,同时NSURLConnection的API从Xcode7开始已经被苹果公司废弃,建议都基于NSURLSession进行网络操作。

3.       AFNetworkReachabilityManager

  a)       网络的连通状态监控以及网络的类型。实际是将苹果官方提供的Reachability的类名和通知名更换了一下,防止和系统提供的类的通知名以及类名的冲突。状态有:《未知、无连接、WWAN(蜂窝网)、WIFI》

  b)       一般写到AppDelegate的入口函数,startMonitoring,检测到的网络状态经过block返回

4.       安全策略:AFN支持SSL绑定的HTTPS安全链接通信。也可以使用无效的证书https,使用方法:

AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];

manager.securityPolicy.allowInvalidCertificates= YES; // 允许无效证书

5.       AFNetWorking的封装

其实AFN的使用非常简单方便,但是为了app解除对于afn的依赖,对于网络请求还是进行了简单的封装。一般封装的网络功能工具类,使用单例模式,主要有POST请求和GET请求,和afn一样,使用block返回数据和状态。还要一些其他的功能,比如上传文件和缓存。关于app中各模块的网络请求,就基于封装的网络工具类创建各模块的分类,进行统一管理网络请求。

6.       AFNetworking FAQ

  a)       dispatch_queue_t使用@property时提示必须为strong,以为iOS6开始dispatch_queue_t被当做对象处理。

  b)       ANF利用NSURLCache提供缓存功能,只要NSURLRequest对象具有正确的高速缓存策略,并且服务器响应包含高速缓存控制头,那么响应将自动缓存以供后后续请求使用

  c)        OAuth可以使用AFOAuth1Client和AFOAuth2Client

7.       常见的序列号和反序列化的错误

  a)       AFN支持接收的数据类型有限,但是我们可以自己在响应器里添加类型,是一个数据类型文本集合

  b)       AFN默认成功的回调是把返回的数据当成JSON来解析,这里我们可以修改响应器为默认的,自己解析

  c)        AFN默认向服务器发送的是普通的二进制数据,当我们需要发送JSON数据时,可以修改请求器为JSON类型的

 8.       AFNetwoking的原理

使用AFHTTPSessionManager进行网络请求,其实现最终是调用了父类AFURLSessionManager,而AFURLSessionManager内部声明NSURLSession的属性,并声明了NSURLSession的代理,最终的网络操作还是由NSURLSession来实现。AFNetworking对数据的解析方式默认是json解析,默认的代理操作队列最大的并发操作数为1是让所有请求的发起和等待网络响应均在同一条线程中执行,而不用为每一个请求都新建一条线程,这样节约了很多资源。在响应到达后,会执行一系列的代理回调,执行数据的解析,返回数据,然后使用通知中心将请求完成的消息传递到主线程去。

1 0
原创粉丝点击