AFNetworking框架分析(一)——结构基本介绍
2018-06-14 本文已影响139人
我只不过是出来写写代码
作为一名iOS开发者,AFN网络请求框架是最为常用熟悉的第三方框架之一。GitHub链接跳转AFN链接
作为一名开发者,本着知其然知其所以然的目的,逐步探究一下如此热门的第三方网络请求框架实现原理。
探究的AFN以3.X版本为主,摒弃了NSURLConnection方法,全部基于NSURLSession方法实现。
首先上一张AFN框架类结构组成
在AFN框架中,负责网络请求通讯最重要的两个类AFURLSessionManager、AFHTTPSessionManager。AFHTTPSessionManager又是继承于AFURLSessionManager,进行了封装。
AFURLRequestSerialization结构的类,主要用于网络请求之前的操作配置,负责配置网络请求的请求头部、序列化请求参数
AFURLResponseSerialization结构的类,主要用于网络请求之后的数据处理,针对不同的数据进行处理,比如JSON、XML、plist、图片格式等数据。
附加功能类中,AFSecurityPolicy主要用于HTTPS环境下的认证安全请求通讯。如果是通过CA认证过的HTTPS访问地址,使用AFN时只需要拼接上https://即可,AFN的网络请求配置中默认使用CA认证访问HTTPS地址;若是自签的证书时,则需要当前类用于进行认证。
AFNetworkReachabilityManager,用于网络状态的监听,判断是否有网络,以及判断网络连接类型,比如蜂窝网络或WiFi环境。但当前类无法判断当前环境能否访问服务器服务。其原理是利用主机的数据包发送。
接下来将按照结构目录的顺序,依次探究各个类在AFN框架中的作用以及实现原理。