iOS一行代码搞定网络请求(AFNetWorking结合ReactiveCocoa)(3)
来源:互联网 发布:有什么好用的水乳 知乎 编辑:程序博客网 时间:2024/06/06 00:49
如要查看完整代码,请移步仿煎蛋github
1、响应式封装网络请求的优点
- 统一处理(返回结果解析的统一处理,错误的统一处理)
- 对网络异常情况的提前处理,和请求后的统一处理
- 使用RACSignal的各种操作符,例如fiter,map,flatternMap,merge等,满足各种需求
- 代码更简练优雅
2、网络监听
- 实时监听
[[[AFNetWorkUtils sharedAFNetWorkUtils] startMonitoringNet] subscribeNext:^(NSString *netStatus) { //此处为每当网络状态改变时,自动调用,返回结果:1、WIFI 2、2G/3G/4G 3、网络已断开 4,其他情况 四种情况 }];
- 获得当前的网络状态
[AFNetWorkUtils sharedAFNetWorkUtils].netType;
放回结果是一个枚举
typedef NS_ENUM(NSInteger, NetType) { NONet, WiFiNet, OtherNet,};
3、 get请求
[[AFNetWorkUtils get2racWthURL:url] subscribeNext:^(id result) { //成功返回(result class is NSDictionary) } error:^(NSError *error) { //错误处理 }];
[[AFNetWorkUtils racGETWithURL:url class:Weather.class] subscribeNext:^(id result) { //直接获得模型对象(result class is NSObject or NSArray) } error:^(NSError *error) { //错误处理 }];
4、post请求
[[AFNetWorkUtils racPOSTWthURL:url params:params] subscribeNext:^(id result) { //成功返回(result class is NSDictionary) } error:^(NSError *error) { //错误处理 }];
[[AFNetWorkUtils racPOSTWithURL:url params:params class:Weather.class] subscribeNext:^(id result) { //直接获得模型对象(result class is NSObject or NSArray) } error:^(NSError *error) { //错误处理 }];
5、获取非JSON 数据(例如String类型数据)
[[AFNetWorkUtils get2racUNJSONWthURL:unJSONUrl] subscribeNext:^(NSData *result) { //返回结果为NSData 类型 }];
6、返回结果解析的统一处理,错误的统一处理
如果服务器返回的数据,都有固定的格式,如果在工具类进行统一的解析,就不用再每次网络请求时都去解析一次了。
例如
{ "status": "ok", "id": 2774402, result:{ }, }或者{ "status": "ok", "id": 2774402, result:[ ], } 或者 { "status": "error", "error": "Post ID '61355' not found." }
则可直接获取result结果,或者错误信息。
7、对网络请求的各种需求(ReactiveCocoa方式的解决方案)
同步的两次网络请求,即上一次的网络请求结果,是下一次网络请求的参数。
例如authToken失效了,先去请求authToken,才能进行当前的请求(Flatternmap
[AFNetWorkUtils racGETWthURL:getAuthTokenURL] flattenMap:^RACStream *(NSString* authToken) { return [AFNetWorkUtils racGETWthURL:nowURL]; };
两个网络请求一步执行,但需要结果统一的处理
例如,新闻类APP,都是先加载缓存数据,再加载网络数据,两个请 求结果都要加载到UITableView上。
[RACSignal merge:@[dbSignal, netSignal]];
- 对请求的过滤(filter)
- 对返回结果的二次处理(map)
- 副作用(doNext)
- 配合RACComand ,对请求开始,请求中,请求结束的处理
0 0
- iOS一行代码搞定网络请求(AFNetWorking结合ReactiveCocoa)(3)
- iOS一行代码搞定UITableView(UITableView结合ReactiveCocoa)(4)
- iOS一行代码搞定数据库(FMDB结合ReactiveCocoa)(6)
- afnetworking网络请求,ios中的网络请求示例代码
- ios AFNetworking网络请求
- iOS AFNetworking 取消网络请求
- iOS开发 - AFNetworking网络请求
- iOS开发 - AFNetworking网络请求
- iOS中网络请求--AFNetworking
- iOS 3DES加密解密(一行代码搞定)
- iOS 3DES加密解密(一行代码搞定)
- iOS 网络请求(AFNetworking)失败的错误码分析
- iOS 网络请求(AFNetworking)失败的错误码分析
- iOS-95-网络请求方式汇总(包含AFNetworking、NSMutableURLRequest)
- Volley封装,一行代码搞定http请求(重点介绍cookie、https、自定义requst请求)
- iOS网络请求---AFNetWorking教程2
- iOS开发: AFNetworking网络请求:NSURLSession版
- iOS第三方网络请求框架--AFNetworking
- 模拟JavaWeb过滤器——责任链模式
- java注解
- UI设计-不简单?简单(2)
- uva 11538 - Chess Queen 先分步还是先分类? 计数问题
- hdu 3078 Network (LCA转RMQ)
- iOS一行代码搞定网络请求(AFNetWorking结合ReactiveCocoa)(3)
- JavaScript学习笔记2-附录(转自w3cschool)
- 过去是行不通的3
- 基于Apache POI 向xlsx写入数据
- 弹窗实验
- CSS选择器优先级
- jquery获取ip地址
- noip2003 麦森数 (数论,高精乘单精)
- python中range函数的使用