iOS 【OC 封装网络请求业务类(AFHTTPRequestOperationManager 废弃)】
2016-01-27 22:19
531 查看
对于一些常用的第三方,他们常用,自然作者也会经常更新。这样一来或许会出现“牵一发而动全身的局面”。一旦一个方法、某个类出现了名称或者功能上的改动,那么如果在项目中多处地方引用了这个不稳定的第三方,是很麻烦的事情。下面我总结归纳了一下封装第三方框架调用的方法。
以AFNetworking为例,这是是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库。下面我们封装一下他的调用接口。
下面是我们封装的类WZYHTTPTool
我们发现其实他和我们方法内部调用的AFHTTPRequestOperation的方法是很像的。是的,没错,就是很像,但这样起到了一个很好的保护作用。如果我们的AFNetworking发生了更新,那么受到影响的不过也就是我们的WZYHTTPTool这一个类而已,我们只需要在这个类中进行一系列的修改。这样保证了我们的项目源文件中没有直接和外来的第三方框架相接触。起到了保护的作用。下面展示一出项目中用到封装之后的WZYHTTPTool类的地方。
在我们封装好的方法中,我们只需要将我们需要的参数传进来,传给block变量(传进来的是block里面那一大坨东西),可以理解成将他们搬到了另外一个类下执行。由此做到控制器不和第三方直接接触即可实现功能。
以AFNetworking为例,这是是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库。下面我们封装一下他的调用接口。
下面是我们封装的类WZYHTTPTool
// // WZYHTTPTool.h // #import <Foundation/Foundation.h> @interface WZYHTTPTool : NSObject + (void)post:(NSString *)url params:(id)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure; + (void)get:(NSString *)url params:(id)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure; @end
#import "WZYHTTPTool.h" #import "AFNetworking.h" @implementation WZYHTTPTool + (void)post:(NSString *)url params:(id)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure { AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; [mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (failure) { failure(error); } }]; } + (void)get:(NSString *)url params:(id)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure { AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (failure) { failure(error); } }]; } @end
我们发现其实他和我们方法内部调用的AFHTTPRequestOperation的方法是很像的。是的,没错,就是很像,但这样起到了一个很好的保护作用。如果我们的AFNetworking发生了更新,那么受到影响的不过也就是我们的WZYHTTPTool这一个类而已,我们只需要在这个类中进行一系列的修改。这样保证了我们的项目源文件中没有直接和外来的第三方框架相接触。起到了保护的作用。下面展示一出项目中用到封装之后的WZYHTTPTool类的地方。
- (void)accessTokenWithCode:(NSString *)code { // 1、拼接请求参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"client_id"] = @"717984953"; params[@"client_secret"] = @"afc15faec72d4b5d41d17d666dbdc39c"; params[@"grant_type"] = @"authorization_code"; params[@"code"] = code; params[@"redirect_uri"] = @"http://"; // 2、发送请求 [WZYHTTPTool post:@"https://api.weibo.com/oauth2/access_token" params:params success:^(id json) { [MBProgressHUD hideHUD]; WZYAccount *account = [WZYAccount accountWithDictionary:json]; // 存储账号信息 [WZYAccountTool saveAccount:account]; // 切换根控制器 UIWindow *window = [UIApplication sharedApplication].keyWindow; [window switchRootViewController]; } failure:^(NSError *error) { WZYLog(@"请求失败-%@",error); [MBProgressHUD hideHUD]; }]; }
在我们封装好的方法中,我们只需要将我们需要的参数传进来,传给block变量(传进来的是block里面那一大坨东西),可以理解成将他们搬到了另外一个类下执行。由此做到控制器不和第三方直接接触即可实现功能。
相关文章推荐
- poj 1273 Drainage Ditches 经典网络流
- 专注于HTTP的高性能高易用性网络库:Fslib.network库
- javaweb学习总结(八)——HttpServletResponse对象(二)
- 利用zbar实现条形码扫描
- mac上gcc的安装(转自网络)
- Windows 上常用进程/网络管理命令整理
- OpenStack网络详解
- TCP的流量控制与拥塞控制
- 《图解HTTP》读书笔记
- HTTP/1.1 协议常用的方法
- 16-1-27---图解HTTP(02)
- TCP/IP协议学习之IP协议首部格式
- 监听指定端口数据交互(HttpListenerContext )
- tomcat7+jdk的keytool生成证书 配置https
- LAMP架构之编译安装httpd+(php-fpm)+mariadb
- 跨网段代理服务器上网配置教程
- 使用Tomcat时一次Http访问的过程
- http header 详解
- 16-1-26---图解HTTP(01)
- Web - HTTP Cookie