AFNetworking适用于iOS和Mac OS X系统。它是一个建立在基础系统的URL加载之上,延长了内置Cocoa强大的高层次的网络抽象的网络库,也是一个具有模块化架构、精心设计以及功能丰富的API。其主要涉及如下几个类:
1. NSURLConnection
AFURLConnectionOperation它继承于NSOperation,作为NSURLConnection的代理来处理请求回调,做好状态切换和线程管理,它可以说是AFNetworking最核心的类 。
AFHTTPRequestOperation它继承于AFURLConnectionOperation,专门用于创建HTTP请求。主要多了responseSerializer函数,处理断点续传的暂停下载,以及提供请求成功或失败的回调接口。
2. NSURLSession
AFURLSessionManager创建和管理NSURLSession对象,以及此对象的数据和下载/上传等任务,实现对象和任务的代理方法。NSURLSession的API本身有一些局限,AFURLSessionManager 能使其变得更好用。
AFHTTPSessionManager继承于AFURLSessionManager,封装了HTTP请求的常见方法。
最后在AFNetworking中还实现了请求和解析的序列化,序列化的灵活性允许其在网络层添加更多的商业逻辑,自定义更方便。NSURLConnection已经封装了HTTPS连接的建立、数据的加密解密功能,我们直接使用NSURLConnection即可访问 HTTPS网站。但是,NSURLConnection并不能验证证书的合法性,无法避免中间人的攻击。要做到真正安全通讯,需要我们手动去验证服务端返回的证书,除了去系统信任的CA机构列表验证,还支持SSL Pinning方式的验证。在AFNetworking中AFSecurityPolicy封装了证书验证的过程,让用户可以轻易使用。AFNetworkReachabilityManager主要负责监控当前的网络可达性,当网络的可达性发生改变时,提供相应的回调和通知接口。