基于AFNetworking3.0网络封装
来源:互联网 发布:php int加括号 编辑:程序博客网 时间:2024/05/17 23:19
1.AFURLConnectionOperation可以说是AFN最基础的类。继承自NSOperation类,将网络请求依附到一个operation上。从而让我们能够有效的控制并观察一个网络请求的创建、进行、取消、完成、暂停恢复、异常等问题及状态。
2.AFHTTPRequestOperation HTTP或HTTPS协议请求的AFURLConnectionOperation的子类。它封装的可接受状态码和内容的类型,判定一个请求结果是成功或失败
3.AFHTTPRequestOperationManager 这个类是AFN类库的核心类。它封装完成了一种通用的模式,可以帮助我们轻松友好的完成请求的创建、响应的系列化,网络状态的监控以及安全策略以及每一个请求operation的管理(operation的相互依赖或状态改变)
4.AFURLRequestSerialization 符合这个协议的对象用于处理请求,它将请求参数转换为 query string 或是 entity body 的形式,并设置必要的 header
5.AFURLResponseSerialization 遵循AFURLResponseSerialization协议的对象,用于验证、序列化响应及相关数据,转换为有用的形式,比如 JSON 对象、图像、甚至基于mantle的模型对象
6.AFNetworkReachabilityManager 网络的连通状态监控以及网络的类型。实际是将苹果官方提供的Reachability的类名和通知名更换了一下,防止和系统提供的类的通知名以及类名的冲突.
SDWebImage底层实现原理:
其实是有沙盒缓存机制,主要由三块组成
1.内存图片缓存2.内存操作缓存3.磁盘沙盒缓存
1.UIImageView+WebCache: setImageWithURL:placeholderImage:options: 先显示 placeholderImage ,同时由SDWebImageManager 根据 URL 来在本地查找图片
2.SDWebImageManager: downloadWithURL:delegate:options:userInfo: SDWebImageManager是将UIImageView+WebCache同SDImageCache链接起来的类, SDImageCache: queryDiskCacheForKey:delegate:userInfo:用来从缓存根据CacheKey查找图片是否已经在缓存中
3.如果内存中已经有图片缓存, SDWebImageManager会回调SDImageCacheDelegate : imageCache:didFindImage:forKey:userInfo:
4.如果内存中没有图片缓存,那么生成 NSInvocationOperation 添加到队列,从硬盘查找图片是否已被下载缓存。
5.如果上一操作从硬盘读取到了图片,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存)。SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo:。进而回调展示图片
6.如果从硬盘缓存目录读取不到图片,说明所有缓存都不存在该图片,需要下载图片,回调 imageCache:didNotFindImageForKey:userInfo:
7.图片下载由 NSURLConnection 来做,实现相关 delegate 来判断图片下载中、下载完成和下载失败
基于AFNetworking3.0网络封装
2016年1月31日 标哥 暂无评论 2,550 阅读
前言
对于开发人员来说,学习网络层知识是必备的,任何一款App
的开发,都需要到网络请求接口。很多朋友都还在使用原生的NSURLConnection
一行一行地写,代码到处是,这样维护起来更困难了。
对于使用AFNetworking
的朋友来说,很多朋友都是直接调用AFNetworking
的API
,这样不太好,无法做到全工程统一配置。
最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworking
的API
,必须调用我们自己封装的一层,如此一来,任何网络配置都可以在这一层里配置好,使用的人无须知道里面在干嘛,只管调用就可以了。
本篇为基于AFNetworking3.0的版本,支持iOS7及其以上版本。若要支持iOS6,请阅读旧版本:http://www.henishuo.com/base-on-afnetworking-wrapper/
常用接口类型
应用开发过程中,所使用类型通常是GET
、POST
及上传图片。因此,这里只是对这几种类型提供API
。
GET接口
这里提供了两个
GET
请求的API
,需要一般情况下GET
请求都是直接写一个完整的URL
,但是有时候为了参数可读性更强,改成传一个字典过来更容易阅读。HYBResponseSuccess
是响应成功的回调,返回的是字典,外部再转换成模型就可以了。HYBResponseFail
是响应失败的回调,只有一个NSError
对象,外部可接收处理。
0 0
- 基于AFNetworking3.0网络封装
- 基于AFNetworking3.0网络封装
- 基于AFNetworking3.0的网络封装
- 基于AFNetWorking3.0的简单封装
- 用AFNetworking3.0封装网络请求
- 用AFNetworking3.0封装网络请求
- 用AFNetworking3.0封装网络请求
- 使用AFNetworking3.0封装网络请求
- AFNetworking3.0封装
- AFNetworking3.0 接口封装
- 封装AFNetworking3.0
- AFNetworking3.0网络请求方法封装(自带缓存功能)
- AFNetworking3.0网络请求方法封装(自带缓存功能)
- AFNetworking3.0网络请求方法封装(自带缓存功能)
- AFNetworking3.0网络请求
- AFNetWorking3.0的简单封装
- iOS 开发 AFNetworking3.0源码解析(一:结构图/网络请求三次封装/上传下载/网络监测)
- AFnetworking3.0的网络请求
- Fast guided Filter
- redhat 几个命令
- 广义回归神经网络GRNN ,竞争神经网络,自组织映射神经网络
- 我与Django
- spring mvc DispatcherServlet详解之前传---FrameworkServlet
- 基于AFNetworking3.0网络封装
- Java创建excel表格并下载
- Java int[] 跟 byte[] 的相互转化,可还原
- UTF-8 的tomcat接受GBK请求乱码
- Masonry的使用
- Redhat hadoop2.7.2 eclipse配置
- Thrift入门及Java实例演示
- HDU 2147 博弈
- 没有建联合索引导致cpu过高