关于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:当我们接手一个新 ...
随机推荐
- python3学习笔记(二):Python初识
一.算法 在开始认真地编程之前,首先来解释下什么是计算机程序设计.简单地说,它就是告诉计算机要做什么.计算机可以做很多事情,但是它不会自己思考,需要我们告诉它具体细节,并且使用计算机能够理解的语言把算 ...
- [THUSC2017]大魔法师:线段树
分析 在线段树上用\(4 \times 4\)的矩阵打标记. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(register int ...
- Spring Cloud架构教程 (二)Hystrix监控数据聚合
上一篇我们介绍了使用Hystrix Dashboard来展示Hystrix用于熔断的各项度量指标.通过Hystrix Dashboard,我们可以方便的查看服务实例的综合情况,比如:服务调用次数.服务 ...
- 常量const实践
这篇文章写的很好:https://www.cnblogs.com/zhangfeionline/p/5882790.html 自己是实践: 1. 定义时必须初始化值,不然如下错误: 2. 3. 使用:
- Python实现人脸识别
识别图片 #coding=utf-8 import requests,cv2 import re import os import bs4 #2.读取图片 filename = 'E:/Python/ ...
- HTTP缓存初识
一.HTTP缓存 1.强制缓存 2.协商缓存 静态资源 动态资源 二.总结 参考: http://muchstudy.com/2016/08/18/HTTP%E7%BC%93%E5%AD%98%E8% ...
- Vue知识整理16:单文件组件
过程较为复杂,这里直接写出视频地址,可以直接查看 https://learning.dcloud.io/#/?vid=14
- windows下 文件资源管理器 的操作
alt + d 可以直接把光标移动到地址栏 shift + f10 可以触发右键, 后面就可以用键盘操作右键中的内容了 ( 如打开vscode alt + 空格 可以弹出窗口的菜单栏 ( 控制最大化 ...
- JavaSE部分1.Java基础
1.为什么重写equals()还要重写hashcode()? (equals()和hashCode()是java Object中两个基本方法) 首先equals与hashcode间的关系是这样的: ...
- MySQL 常用报错注入原理分析
简介 这段时间学习SQL盲注中的报错注入,发现语句就是那么两句,但是一直不知道报错原因,所以看着别人的帖子学习一番,小本本记下来 (1) count() , rand() , group by 1.报 ...