关于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状态发生变化时回掉到这里
    }];

 

时间: 2024-10-13 02:33:57

关于MKNetworking自己维护的相关文章

MongoDB 维护Replica Set

在每个MongoDB(版本 3.2.9) Instance中,都有一个本地数据库(local),用于存储 Replication 进程的信息和本地数据.local 数据库的特性是:位于local数据库中的数据和集合不会被 Replication 进程复制到其他MongoDB instance上.如果实例上有些collection 和 data不计划被复制到其他MongoDB Instance,可以将这些collection 和 data 存储在local 数据库中. MongoDB shell提

Oracle 11g Dataguard 配置,维护与详解 (ADG)

一.前言: 本手册主要记录如何配置,还介绍了配置原因,以及注意要点,已经主备切换,以及故障转移等重要操作步骤,我希望这个文章可以作为进行dataguard配置的一个参考手册. 二.前提 1.主库是归档模式: 如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的.透过很多修饰的官方语言,我们需要明确DG(dataguard简称,后同)实际上的作用就是用来高可用.而实现原理就是从主库获取数据到从库,在主库发生异常的时候,从库接管主库,完成身份的变化.可以一个主库,最

通过CLI命令使ESXi主机进入、退出维护模式

1.进入维护模式: 方法一:# vim-cmd /hostsvc/maintenance_mode_enter 方法二:# esxcli system maintenanceMode set --enable yes 方法三:# vimsh -n -e /hostsvc/maintenance_mode_enter 2.退出维护模式:方法一:# vim-cmd /hostsvc/maintenance_mode_exit 方法二:# esxcli system maintenanceMode s

阿里巴巴内核维护开发团队怎么了?

之前有一段时间,感觉阿里巴巴的内核维护开发团队很牛,最近一直没听到什么声音,官网也好久没用更新了.那么阿里巴巴的内核维护开发团队到底怎么了? 也许是公司不够重视,也许是不容易出成果,也许认为不用这么多人,等等. 这从侧面反应了,在国内做内核这一方向路还是比较窄的,希望中国操作系统事业越来越好. 有知道国内内核开发现状的朋友,欢迎留言,共同交流,睁眼看世界.

web在线打印,打印阅览,打印维护,打印设计

winform打印的方案比较多,实现也比较容易,而且效果也非常炫:但现在越来越多的系统是web系统,甚至是移动端.网上也有非常的web打印方案,但各式各样的问题非常多,比如js兼容性,稳定性等一直缠绕着众多的程序员,或者就是web 打印需要浏览器安装 ActiveX 组件,ActiveX安装不容易成功等等问题. 下面我们来看一种web在线阅览,在线编辑,在线打印的解决方案,Lodop这一款在线打印工具在各版本浏览器的兼容性表现不错,功能方面,我们常用的打印阅览,打印设计,打印机设置等他都提供了,

MHA 日常维护命令集

MHA 日常维护命令集 1.查看ssh登陆是否成功 masterha_check_ssh --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf 2.查看复制是否建立好 masterha_check_repl --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf 3.启动mha noh

2015-8-30华为分包商维护交付工程师上岗证认证-ITR流程(GTS)非多选

ITR流程(GTS) 试题1  判断题(4.0分) 因客户不按华为提供的正式文档操作.维护设备,或因客户提供的配套设施问题而引发的技术服务请求,判定为客户原因. 对 试题2  判断题(4.0分) 对于问题需要提交iCare服务请求单,而需求(新资料.订制等)则应该在RM系统中提单,使用W3帐号密码即可进入RM系统,无需单独申请帐号. 对 试题3  判断题(4.0分) RDE的全称为Research and Develop Engineer. 对 窗体顶端 试题4  判断题(4.0分) 恢复是指采

微信小程序结合后台数据管理实现商品数据的动态展示、维护

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通过小程序的请求Web API 平台获取JSON数据在小程序界面上进行动态展示. 1.整体性的架构设计 我们整体性的架构设计,包含一个Web管理后台.一个Web API统一接口层.当然还有数据库什么,另外还有一个小程序客户端.整个架构体系还是以我之前随笔介绍的<整合微信小程序的Web API接口层的架

我的版权何在?博客园就不维护博友文章的版权?

说到版权心里就很不爽,大家很多时候自己的利益都有被侵犯的时候,很多人感觉不再乎,以前自己也是. 自己以前在51cto技术博客也写博客,不能说每天都写吧,但是每周都会出新笔记,当时自己也有很多粉丝,当时朋友就给我说,记得写笔记啊,我们都等着看呢,晚上10点前发出来,我必看.当时自己把自己知道的,结合所学到的一块做成world文档,加图片,标注,一心一意的写,偶尔也会录个小视频.想着自己会有越来越多的粉丝,后来博客就被封了,就中午下去吃顿饭的功夫,后来申诉去了,说我博客内容雷同,想想可能版权的问题,