关于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. sqli-lab(37)

    0X01 看看源码 what is mean? 定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符. 下列字符受影响: \x00 \n ...

  2. JSON.stringify方法报错:Converting circular structure to JSON

    别以为JSON.parse(JSON.stringify(data))做深拷贝无敌,对于以下这种情况,当你需要保留父级对象,即 对象存在循环引用,就会报错. var a = [ { "id& ...

  3. 树链剖分&咕咕咕了好久好久的qtree3

    前言 显然qtree系列都是树链剖分辣 发现自己没有专门整理过树链剖分耶 辣么就把这篇博客魔改成树链剖分好辣(貌似除了树剖也没什么好写的) 正文 废话了辣么多终于开始了 一.树剖怎么写鸭 二.树剖有什 ...

  4. seleniumIDE回放找不到页面元素

    seleniumIDE回放找不到页面元素 如下所示,自动回放就报错,手动执行就不报错.

  5. Openstack_通用模块_Oslo_vmware 创建 vSS PortGroup

    目录 目录 vSS vSSPG vSphere SDK 中相关的网络对象 创建 vSS PortGroup vSS & vSSPG vSS(Standard vSwitch 标准交换机) 为在 ...

  6. 快速入门分布式消息队列之 RabbitMQ(3)

    目录 目录 前文列表 前言 通道 Channel 一个基本的生产者消费者实现 消费者 生产者 运行结果 应用预取计数 应用 ACK 机制 最后 前文列表 快速入门分布式消息队列之 RabbitMQ(1 ...

  7. 阶段3 1.Mybatis_11.Mybatis的缓存_2 延迟加载和立即加载的概念

    用户关联的account信息,假设一个用户管理的account有100个.那么我们在查询用户的时候那100个关联的信息也被查询出来. 用的时候才去查关联的数据 这两个不同的地方就是查询的时机不同 什么 ...

  8. drop() delete() remove()函数

    drop()函数 1 删除前务必指定columns或index,避免出错. import pandas as pd df = pd.DataFrame({'a':[1,2,3], 'b':[3,4,5 ...

  9. 纯css闪烁效果

    .i-i-box-active{ -webkit-animation: shan666 1s infinite ease-in-out; animation: shan666 1s infinite ...

  10. springboot文件上传报错

    异常信息: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet reques ...