关于MKNetworking自己维护
关于MKNetworking自己维护
个人比较偏向MKNetworking, 因为在小项目里这个网络请求框架可以说是很轻量级。但是里边有一部分功能缺失或者是功能富余, 以及需要优化的地方。 所以决定自己来维护一个MK的repo以便自己使用。
在GITHUB : MKNetworking-DLProtecting这里大家可以看到源码以及DEMO工程。
0.INIT
创建Engin
NSDictionary * customHeader = @{
@"version" : @"0.0.1",
@"channel" : @"appleStore"
};
MKNetworkEngine * engin = [[MKNetworkEngine alloc] initWithHostName:@"api.devdylan.com" apiPath:@"MKNetFrame" customHeaderFields:customHeader]; // 使用缓存
[engin useCache];- 创建Operation并添加回调
- 执行
1.GET
// - GET /DOWNLOAD - //
// 使用operationWithPath: 创建operation, 会自动拼接engin的HOST与apiPath等
MKNetworkOperation * operation = [engin operationWithPath:@"Student.json" params:nil httpMethod:@"GET" ssl:NO];
// 使用operationWithURLString: 创建operation, 不会拼接engin的HOST与apiPath
MKNetworkOperation * operation_url = [engin operationWithURLString:@"http://api.devdylan.com/MKNetFrame/Student.json" params:nil httpMethod:@"GET"];
NSLog(@"%@", operation.url);
NSLog(@"%@", operation_url.url);
[operation addCompletionHandler:^(MKNetworkOperation *completedOperation) {
// 这里处理请求正确的时候
NSLog(@"%@", completedOperation.responseJSON);
if ([completedOperation isCachedResponse]) {
// 你现在得到的是缓存中的数据
} else {
// 你现在得到的是服务器的数据
}
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
// 这里返回服务器级的错误或者是JSON解析等错误.
NSLog(@"%@", completedOperation.error);
}];
// 执行当前网络请求
[engin enqueueOperation:operation];
2.POST
// - POST / UPLOAD - //
MKNetworkOperation * operation_post = [engin operationWithPath:@"Student.json" params:nil httpMethod:@"POST" ssl:NO];
[operation_post addCompletionHandler:^(MKNetworkOperation *completedOperation) {
// 这里处理请求正确的时候
NSLog(@"%@", completedOperation.responseJSON);
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
// 这里返回服务器级的错误或者是JSON解析等错误.
NSLog(@"%@", completedOperation.error);
}];
[engin enqueueOperation:operation_post forceReload:YES]; // 设置不读缓存
3.UPLOAD
// 添加路径下文件
[operation_post addFile:@"FILE PATH" forKey:@"image.png"];
// 添加Data
[operation_post addData:[NSData data] forKey:@"image2.png"];
[operation_post onUploadProgressChanged:^(double progress) {
// 上传进度
}];
4.DOWNLOAD
// 下载文件时, 添加下载流
[operation addDownloadStream:[NSOutputStream outputStreamToFileAtPath:@"downloadPath/image.png" append:YES]];
[operation onDownloadProgressChanged:^(double progress) {
// 下载进度
}];
5.FORCELOAD
[engin enqueueOperation:operation_post forceReload:YES]; // 设置不读缓存
6.FREEZABLE
// 设置当前operation冻结
[operation_post setFreezable:YES];
// 解除冻结
[operation_post setFreezable:NO];
7.OTHERS
[operation_post onNotModified:^{
// 在服务器304时调用
}];
// 取消请求
[operation_post cancelOperation];
// 只在WIFI情况下请求, 默认为NO
engin.wifiOnlyMode = YES;
// 取消该引擎下所有的网络请求
[engin cancelAllOperation];
// 移除某一个网络请求
[engin removeOperation:operation_post];
// 清空缓存
[engin emptyCache];
[engin setReachabilityChangedHandler:^(NetworkStatus statu) {
// 处理网络状态发生变化的回掉
}];
[operation_post setOperationStateChangedHandler:^(MKNetworkOperationState state) {
// 当operation状态发生变化时回掉到这里
}];
关于MKNetworking自己维护的更多相关文章
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 开发者最爱的Firebug停止更新和维护
近日,Firebug团队在其官网上宣布,Firebug将不再继续开发和维护,并邀请大家使用Firefox的内置开发工具. Firebug最初是2006年1月由Joe Hewitt编写, ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- ola.hallengren的SQL Server维护脚本
ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...
- 数据库日常维护-CheckList_03有关数据库数据文件大小检查
日常数据维护中容量规划是每个DBA的基础工作之一,也是非常重要的工作.在生产环境中一些比较重要的业务数据库会用前期容量规划不足,或出现意外的爆发式的数据增长,直至盛满整个磁盘空间,系统会无法使用,最终 ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- Oracle基础维护02-表、主键、索引、表结构维护手册
目录 一.项目新建表.主键.索引注意事项 二.举例说明建表.主建.索引的操作方法 2.1 设定需求如下 2.1.1 查询数据库有哪些表空间 2.1.2 本文档假设数据库有这两个业务用户的表空间 2.2 ...
- OCP考点实战演练02-日常维护篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...
- Oracle架构设计01:表空间的管理维护规范
Oracle数据库的表空间管理可以说是非常简单和基础的一项维护工作,但是越简单的事情就越要制定统一的规范,这样数据库的各项管理工作才会愈加的简单高效. 那么接下来,问题来了.. Q1:当我们接手一个新 ...
随机推荐
- Nginx的正则表达式
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Ра ...
- vue相关基础知识
参考文章: Vue 项目里戳中你痛点的问题及解决办法(更新) vue中前进刷新.后退缓存用户浏览数据和浏览位置的实践
- java 用redisTemplate 的 Operations存取list集合
一 .存取为list类型 @RestController @RequestMapping("/test") @Slf4j public class TestController { ...
- ELK5+redhat7.4配置elasticsearch集群
ELK介绍 ELK是三个开源软件的缩写,即elasticsearch.logstack.kibana. Elasticsearch:开源分布式搜索引擎,提供搜集.分析.存储数据三大功能.它的特点有:分 ...
- linux 简单命令说明
1.df -h 查看磁盘占用及挂载情况 挂载磁盘 如下: mount /dev/sda1 /boot 取消挂载的磁盘 umount /boot 2.dh -sh 查看当前目录占用文件大小 dh -sh ...
- Nginx常见配置说明
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...
- matlab常见使用
可以新建一个.m文件,将代码放入其中 1.求平均 A=[ 1 2; 3 4; ] a=mean(A,1) %按列平均 b=mean(A,2) %按行平均 c=mean(A(:)) %全部平均 2.清屏 ...
- np.random.shuffle(x)与np.random.permutation(x)
来自:https://blog.csdn.net/brucewong0516/article/details/79012233 将数组打乱随机排列 两种方法: np.random.shuffle(x) ...
- 测开之路一百五十三:ajax之load、get、ajax在项目中的体现
在查询的时候是使用ajax进行请求的 目录结构 personal.models from datetime import datetimefrom flask_sqlalchemy import SQ ...
- Python子类调用父类内属性的方法
常见的就是初始化方法__init__() python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函 ...