为什么要用AFNetworking?
1、带block形式, 内部是任务队列进行下载 ,就是对operation的一个封装下载。
2、还对uikit 内部的类进行类别形式添加方法(异步下载图片)。
3、还可以检测网络状态。
ASI 以前使用比较多得一个下载开源库,现在已经不维护了,ASI 使用的时候要导入很多库 比较麻烦第一点。
AFNetWorking处理网络请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
所有的网络请求,均有manager发起。
取消任务
[manager.operationQueue cancelAllOperations];
扩展:
1、Session:中文有译作时域的,就是指某个客户端在访问服务器起到停止访问这一段的时间间隔被称为时域。
2、Cookie:由服务器发送给客服端,把Cookie的key:value值储存在本地文件夹下,当下次请求的时候能够直接发送Cookie获得权限验证
主要组成:
1:AFURLConnectionOperation
可以说是AFN最基础的类。继承自NSOperation类,将网络请求依附到一个operation上。从而让我们能够有效的控制并观察一个网络请求的创建、进行、取消、完成、 暂停恢复、异常等问题及状态。
2:AFHTTPRequestOperation
HTTP或HTTPS协议请求的AFURLConnectionOperation的子类。它封装的可接受状态码和内容的类型,判定一个请求结果是成功或失败。
实际上对系统的HTTP网络请求增加了几个HTTP需要用到的参数。
3:AFHTTPRequestOperationManager
这个类是AFN类库的核心类。它封装完成了一种通用的模式,可以帮助我们轻松友好的完成请求的创建、响应的系列化,网络状态的监控以及安全策略以及每一个请求operation的管理(operation的相互依赖或状态改变)。
4:AFURLSessionManager
iOS7 之后,苹果增加了新的网络请求类--NSURLSession。AFN官方推荐iOS 7 或者 Mac OS X 10.9以上的,最好使用该类发起网络请求,取代AFHTTPRequestOperationManager。不过基于目前国内app大都最低适配的 iOS6,该类的用途还不是太广泛。NSURLSession的说明或者使用不再赘述。自行查看API文档。以后有时间再加上该类的使用。
5:AFNetworkReachabilityManager
网络的连通状态监控以及网络的类型。实际是将苹果官方提供的Reachability的类名和通知名更换了一下,防止和系统提供的类的通知名以及类名的冲突。
6:AFURLRequestSerialization
①:符合这个协议的对象用于处理请求,它将请求参数转换为 query string 或是 entity body 的形式,并设置必要的 header。
②:构建multipart请求。
7:AFURLResponseSerialization
遵循AFURLResponseSerialization协议的对象,用于验证、序列化响应及相关数据,转换为有用的形式,比如 JSON 对象、图像、甚至基于mantle的模型对象。
代码请求过程:
使用AFNetworking发送请求、接收响应很简单,只要如下几步
1.创建AFHTTPRequestOperationManager对象
2.根据服务器响应内容的不同,为AFHTTPRequestOperationManager对象指定不同的解析器。
该对象默认的解析器要求服务器响应是JSON数据或Plist数据。
如果服务器响应数据是其他格式的,则需要手动设置响应解析器。
3.如果需要发送GET请求,调用AFHTTPRequestOperationManager对象的GET:parameters:success:failure:方法即可;
如果要发送POST请求,调用该对象的POST:parameters:success:failure:方法即可.两个方法都可指定通信成功、通信失败的代码块。
4.在success:参数指定的代码块中处理服务器响应成功的正确数据;在failure:参数指定的代码块中处理服务器响应的错误数据。
基本架构:
首先,AFNetworking是封装的NSURLSession的网络请求。
其次,AFNetworking由五个模块组成:
NSURLSession:网络通信模块(核心模块) 对应 AFNetworking中的 AFURLSessionManager和对HTTP协议进行特化处理的AFHTTPSessionManager,AFHTTPSessionManager是继承于AFURLSessionmanager的;
Security:网络通讯安全策略模块 对应 AFSecurityPolicy;
Reachability:网络状态监听模块 对应AFNetworkReachabilityManager;
Serialization:网络通信信息序列化、反序列化模块 对应 AFURLResponseSerialization;
UIKit:对于IOSUIKit的扩展库;
NSURLSession网络请求的过程:
-->创建NSURLSessionConfig对象
-->用创建的config对象配置初始化NSURLSession
-->创建NSURLSessionTask对象并resume执行,用delegate或者block回调返回数据。
AFURLSessionManager封装了上述网络交互功能。
AFURLSessionManager请求过程:
1.初始化AFURLSessionManager。
2.获取AFURLSessionManager的Task对象
3.启动Task
AFURLSessionManager会为每一个Task创建一个AFURLSessionmanagerTaskDelegate对象,manager会让其处理各个Task的具体事务,从而实现了manager对多个Task的管理
初始化好manager后,获取一个网络请求的Task,生成一个Task对象,并创建了一个AFURLSessionmanagerTaskDelegate并将其关联,设置Task的上传和下载delegate,通过KVO监听download进度和upload进度
网友评论