关于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自己维护的更多相关文章

  1. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  2. 开发者最爱的Firebug停止更新和维护

        近日,Firebug团队在其官网上宣布,Firebug将不再继续开发和维护,并邀请大家使用Firefox的内置开发工具.     Firebug最初是2006年1月由Joe Hewitt编写, ...

  3. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  4. ola.hallengren的SQL Server维护脚本

    ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...

  5. 数据库日常维护-CheckList_03有关数据库数据文件大小检查

    日常数据维护中容量规划是每个DBA的基础工作之一,也是非常重要的工作.在生产环境中一些比较重要的业务数据库会用前期容量规划不足,或出现意外的爆发式的数据增长,直至盛满整个磁盘空间,系统会无法使用,最终 ...

  6. 数据库日常维护-CheckList_01历史Agent Job执行情况检查

    检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...

  7. Oracle基础维护02-表、主键、索引、表结构维护手册

    目录 一.项目新建表.主键.索引注意事项 二.举例说明建表.主建.索引的操作方法 2.1 设定需求如下 2.1.1 查询数据库有哪些表空间 2.1.2 本文档假设数据库有这两个业务用户的表空间 2.2 ...

  8. OCP考点实战演练02-日常维护篇

    本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...

  9. Oracle架构设计01:表空间的管理维护规范

    Oracle数据库的表空间管理可以说是非常简单和基础的一项维护工作,但是越简单的事情就越要制定统一的规范,这样数据库的各项管理工作才会愈加的简单高效. 那么接下来,问题来了.. Q1:当我们接手一个新 ...

随机推荐

  1. Xshell Linux常用命令

    Xshell :一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议. 0 帮助 命令 与清屏 help  查看帮助命令 ls  ...

  2. 3-Gitblit服务器搭建及IDEA整合Git使用

    背景:虽然有GitHub.GitLab这样强大的Git仓库,但是涉及私有Git库要收费,所以自己动手搭建免费的用用 环境:windows 7 旗舰版.JDK 1.8.IDEA 2017 ------- ...

  3. android自定义camera以及uri和文件路径之间的转换

    相对直接调用系统的camera,这种方法使用得相对还少一些.根据api文档,步骤如下: 定义一个预览类 可以参照<android高薪之路>这本书上面,有这种方法的一种完整实现 而对应的ac ...

  4. &&的运算顺序

    先判断“&&”左侧的表达式,左侧的表达式为真时,再运算右侧的表达式.如左侧为假,则不运算右侧.

  5. Linux_Rsync远程同步备份服务器

    目录 目录 Remote Sync 同步的类型 本地模式 远程模式 RSync列表模式 RSync 服务模式 Setup RSync service How to use the rsync comm ...

  6. 八:flask-重定向示例

    现象:访问地址a,跳转到地址b,在flask中,使用redirect()来进行重定向 永久性重定向:301,多用于旧网址被废弃了,需要跳转到新网址访问 例如请求www.jingdong.com,会自动 ...

  7. SAMBA服务和FTP服务讲解

    rz sz window和Linux之间小文件的传输 yum install lrzsz -y rz:window文件传送到linux中 sz:把Linux文件传送到window 防火墙: 立即关闭但 ...

  8. Failure to find com.oracle:ojdbc6:jar:11.2.0.1.0

    报错原因:oracle的ojdbc.jar是收费的,maven的中央仓库是没有的,需要下载到本地,然后打包进maven仓库 1.下载ojdbc6-11.2.0.1.0.jar包 http://cent ...

  9. [Usaco2017 Jan]Promotion Counting

    n只奶牛构成了一个树形的公司,每个奶牛有一个能力值pi,1号奶牛为树根.问对于每个奶牛来说,它的子树中有几个能力值比它大的.Inputn,表示有几只奶牛 n<=100000接下来n行为1-n号奶 ...

  10. 【Qt开发】几个傻不拉几关于char*和const char*的不兼容问题

    1. string转const char* string s ="abc";constchar* c_s = s.c_str(); 2. const char*转string   ...