AFNetworking框架实现原理
来源:互联网 发布:微信打开淘宝链接 原理 编辑:程序博客网 时间:2024/05/20 01:39
AFN框架的横空出现是我等程序员请求数据时的一个大招,现在就紧跟我的脚步咱们简要看看其内部原理,先上图,我们再说话:
AFN封装了NSURLConnection和NSURLSession的功能,只需一行代码我们就可以轻松愉快的请求数据了还有两个辅助功能就是:安全策略(HTTPS)和网络连接状态(Reachability):
我感觉最好的就是Json数据的序列话和反序列话,但是对于XML数据的解析就有点扯淡了!现在我们重点说说这部分:
AFN请求和相应的数据格式已经默认设置好了:
设置请求的数据格式:self.requestSerializer = [AFHTTPRequestSerializer serializer]; // 二进制
设置相应的数据格式:self.responseSerializer = [AFJSONResponseSerializer serializer]; // 默认是JSON
AFN可供选择的请求格式有:
AFHTTPRequestSerializer 二进制的(默认的)
AFJSONRequestSerializer JSON
AFPropertyListRequestSerializer PList
AFN可供选择的 响应的格式:
AFHTTPResponseSerializer 二进制的
AFJSONResponseSerializer JSON(默认的)
AFXMLParserResponseSerializer XMLParser
AFXMLDocumentResponseSerializer XML DOM(仅 MAC 可用)
AFPropertyListResponseSerializer PList
AFImageResponseSerializer 图像
AFCompoundResponseSerializer 组合
对于常规的网络请求数据格式如下(不做任何修改)
-发送数据的格式,就是二进制的
-接收的数据格式,JSON是最流行的数据格式,没有之一!
最坑的就是AFN对于返回数据是XML类型的,顿时傻逼了!!这可怎么办?唯一的办法只有我们自己手动解析了!解析XML文件有两种方式:SAX解析 和 DOM解析,如果我们想要SAX解析的话就设置:manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; 如果我们要DOM解析的话就设置:manager.responseSerializer = [AFHTTPResponseSerializer serializer];但是DOM解析的话只实用于小文件。
如果我们要请求 Image图像数据的话最好实用 SDWebImage框架,因为它的缓存机制是碉堡的。
综上所述:AFN框架的主要作用就是进行数据的传输和简单的数据解析,在这里我们不需要考虑HTTP和线程间的通讯问题,因为返回来的数据就在主线程内。
- AFNetworking框架实现原理
- AFNetworking内部实现原理
- AFNetworking的实现原理
- AFNetWorking的实现原理
- AFNetWorking使用和实现原理
- AFNetWorking使用和实现原理
- AFNetworking和SDWebImage实现原理
- iOS之AFNetworking实现原理和使用方法
- iOS之AFNetworking实现原理和使用方法
- [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
- AspectJ框架实现原理
- HOOK框架原理实现
- 深入介绍AFNetworking原理
- AFNetWorking的底层原理
- 开源框架:AFNetworking
- AFNetworking框架使用浅析
- AFNetworking框架使用浅析
- AFNetworking框架的使用
- Windows Miniport驱动在接收过程中出现的黑屏问题
- mysql脏读、不可重复读、幻读(虚读)
- bzoj3779: 重组病毒
- maven配置问题
- 浅谈Spark应用程序的性能调优
- AFNetworking框架实现原理
- mysql找不到mysql.sock
- 利用javaScript闭包做到函数的私有性和公开性
- golang
- MySQL学习笔记1(mysql数据类型)
- 2016年CSDN博客排名第一名,何许人也
- Uva297——Quadtrees
- 4069: [Apio2015]巴厘岛的雕塑 DP+按位贪心
- 求某二进制数中1的个数