关于MKNetworking自己维护
2016-02-24 20:40
441 查看
关于MKNetworking自己维护
个人比较偏向MKNetworking,因为在小项目里这个网络请求框架可以说是很轻量级。但是里边有一部分功能缺失或者是功能富余,以及需要优化的地方。所以决定自己来维护一个MK的repo以便自己使用。在
0.INIT
创建Engin
NSDictionary*customHeader=@{ @"version":@"0.0.1", @"channel":@"appleStore" }; MKNetworkEngine*engin=[[MKNetworkEnginealloc]initWithHostName:@"api.devdylan.com"apiPath:@"MKNetFrame"customHeaderFields:customHeader]; //使用缓存 [enginuseCache];
创建Operation并添加回调
执行
1.GET
//-GET/DOWNLOAD-// //使用operationWithPath:创建operation,会自动拼接engin的HOST与apiPath等 MKNetworkOperation*operation=[enginoperationWithPath:@"Student.json"params:nilhttpMethod:@"GET"ssl:NO]; //使用operationWithURLString:创建operation,不会拼接engin的HOST与apiPath MKNetworkOperation*operation_url=[enginoperationWithURLString:@"http://api.devdylan.com/MKNetFrame/Student.json"params:nilhttpMethod:@"GET"]; NSLog(@"%@",operation.url); NSLog(@"%@",operation_url.url); [operationaddCompletionHandler:^(MKNetworkOperation*completedOperation){ //这里处理请求正确的时候 NSLog(@"%@",completedOperation.responseJSON); if([completedOperationisCachedResponse]){ //你现在得到的是缓存中的数据 }else{ //你现在得到的是服务器的数据 } }errorHandler:^(MKNetworkOperation*completedOperation,NSError*error){ //这里返回服务器级的错误或者是JSON解析等错误. NSLog(@"%@",completedOperation.error); }]; //执行当前网络请求 [enginenqueueOperation:operation];
2.POST
//-POST/UPLOAD-// MKNetworkOperation*operation_post=[enginoperationWithPath:@"Student.json"params:nilhttpMethod:@"POST"ssl:NO]; [operation_postaddCompletionHandler:^(MKNetworkOperation*completedOperation){ //这里处理请求正确的时候 NSLog(@"%@",completedOperation.responseJSON); }errorHandler:^(MKNetworkOperation*completedOperation,NSError*error){ //这里返回服务器级的错误或者是JSON解析等错误. NSLog(@"%@",completedOperation.error); }]; [enginenqueueOperation:operation_postforceReload:YES];//设置不读缓存
3.UPLOAD
//添加路径下文件 [operation_postaddFile:@"FILEPATH"forKey:@"image.png"]; //添加Data [operation_postaddData:[NSDatadata]forKey:@"image2.png"]; [operation_postonUploadProgressChanged:^(doubleprogress){ //上传进度 }];
4.DOWNLOAD
//下载文件时,添加下载流 [operationaddDownloadStream:[NSOutputStreamoutputStreamToFileAtPath:@"downloadPath/image.png"append:YES]]; [operationonDownloadProgressChanged:^(doubleprogress){ //下载进度 }];
5.FORCELOAD
[enginenqueueOperation:operation_postforceReload:YES];//设置不读缓存
6.FREEZABLE
//设置当前operation冻结 [operation_postsetFreezable:YES]; //解除冻结 [operation_postsetFreezable:NO];
7.OTHERS
[operation_postonNotModified:^{ //在服务器304时调用 }]; //取消请求 [operation_postcancelOperation]; //只在WIFI情况下请求,默认为NO engin.wifiOnlyMode=YES; //取消该引擎下所有的网络请求 [engincancelAllOperation]; //移除某一个网络请求 [enginremoveOperation:operation_post]; //清空缓存 [enginemptyCache]; [enginsetReachabilityChangedHandler:^(NetworkStatusstatu){ //处理网络状态发生变化的回掉 }]; [operation_postsetOperationStateChangedHandler:^(MKNetworkOperationStatestate){ //当operation状态发生变化时回掉到这里 }];
相关文章推荐
- 新项目的架构(杂记)
- Linux 下IOport编程訪问
- 大型分布式网站架构技术总结
- 笔记: linux常用命令(二) ln命令
- 系统架构
- linux驱动开发—基于Device tree机制的驱动编写
- SELinux开启与关闭各参数说明!!!!
- hdu 4349 Xiao Ming's Hope lucas
- Archlinux安装笔记
- redhat6.5 空系统下安装yum及 更新链接为centos
- linux 学习第三天
- 在linux下挂载磁盘方法
- linux 查看当前文件夹下每个文件或者文件夹的大小命令
- Linux 安装 Pycharm
- Nginx负载均衡
- Property动画示例
- Apache-Tomcat-8.0.32 For Max OS
- opencv 摄像头和视频操作的两种方法
- Kubernetes集群环境搭建on Centos7
- 正式生产环境下hadoop集群的DNS+NFS+ssh免password登陆配置