ios之mknetworkkit笔记
asi没法用了,蛋疼了,在af和mk之间纠结,感觉af不适合我的口味,解析和网络耦合相对似乎重了点
mk似乎默认的不支持下载的断点续传,这里参考网上的代码处理了下,0修改mk的库,下面是实现的代码
// // RootViewController.m // webTest // // Created by mmc on 13-11-24. // Copyright (c) 2013年 mmc. All rights reserved. // #import "RootViewController.h" #import "MKNetworkEngine.h"@implementation RootViewController- (IBAction) getTest:(id)sender {MKNetworkEngine* engine = [[MKNetworkEngine alloc] initWithHostName:@"192.168.1.105:8080"];[engine useCache];NSMutableDictionary* params = [NSMutableDictionary dictionaryWithCapacity:0];[params setObject:@"get数据1" forKey:@"arg1"];[params setObject:@"get数据2" forKey:@"arg2"];//最后的斜杠不能丢掉,不然会出问题MKNetworkOperation *operation = [engine operationWithPath:@"/yii/testApp/index.php?r=httpTest/getTest/"params:paramshttpMethod:@"GET"];[operation addCompletionHandler:^(MKNetworkOperation *completedOperation){NSString *responseString = [completedOperation responseString];NSLog(@"%@", responseString);if([completedOperation isCachedResponse]) {NSLog(@"Data from cache %@", [completedOperation responseString]);}else {NSLog(@"Data from server %@", [completedOperation responseString]);}}errorHandler:^(MKNetworkOperation *errorOp, NSError* error) {NSLog(@"%@",error);}];[engine enqueueOperation:operation];}- (IBAction) postTest:(id)sender {MKNetworkEngine* engine = [[MKNetworkEngine alloc] initWithHostName:@"192.168.1.105:8080"];[engine useCache];NSMutableDictionary* params = [NSMutableDictionary dictionaryWithCapacity:0];[params setObject:@"post数据1" forKey:@"arg1"];[params setObject:@"post数据2" forKey:@"arg2"];MKNetworkOperation *operation = [engine operationWithPath:@"/yii/testApp/index.php?r=httpTest/postTest/"params:paramshttpMethod:@"POST"];[operation addCompletionHandler:^(MKNetworkOperation *completedOperation){NSString *responseString = [completedOperation responseString];NSLog(@"%@", responseString);if([completedOperation isCachedResponse]) {NSLog(@"Data from cache %@", [completedOperation responseString]);}else {NSLog(@"Data from server %@", [completedOperation responseString]);}}errorHandler:^(MKNetworkOperation *errorOp, NSError* error) {NSLog(@"%@",error);}];[engine enqueueOperation:operation]; }- (IBAction) downloadTest:(id)sender {MKNetworkEngine* engine = [[MKNetworkEngine alloc] initWithHostName:@"127.0.0.1"];[engine useCache];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);NSString *cachesDirectory = paths[0];NSString *downloadPath = [cachesDirectory stringByAppendingPathComponent:@"x.iso"];//判断之前是否下载过 如果有下载重新构造HeaderNSMutableDictionary *newHeadersDict = [[NSMutableDictionary alloc] init];NSFileManager *fileManager = [NSFileManager defaultManager];if ([fileManager fileExistsAtPath:downloadPath]){NSError *error = nil;unsigned long long fileSize = [[fileManager attributesOfItemAtPath:downloadPath error:&error] fileSize];NSString *headerRange = [NSString stringWithFormat:@"bytes=%llu-", fileSize];[newHeadersDict setObject:headerRange forKey:@"Range"];}MKNetworkOperation *operation = [engine operationWithURLString:@"http://192.168.1.105:8080/2.iso"];[operation addDownloadStream:[NSOutputStream outputStreamToFileAtPath:downloadPathappend:YES]];[operation addHeaders:newHeadersDict];[engine enqueueOperation:operation];//进度回调[operation onDownloadProgressChanged:^(double progress){NSLog(@"download %.2f", progress*100.0);}];//结束回调[operation addCompletionHandler:^(MKNetworkOperation* completedRequest){NSLog(@"download complete %@", completedRequest);}errorHandler:^(MKNetworkOperation *errorOp, NSError* error){NSLog(@"%@", error);}]; }@end
下一步,实现xxxBegin,xxxEnd,xxxFail,然后弄个delegates,做响应链传递,神奇的block,实在受不了,看起来真tmd不是一般的累啊,重回接口回调- -
ios之mknetworkkit笔记相关推荐
- ios开发学习笔记--Core Motion
iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一. 简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...
- IOS之学习笔记十五(协议和委托的使用)
1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...
- iOS工程开发笔记二
iOS工程开发笔记<二> 在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了. Xcode 6去掉Precompile ...
- IOS开发学习笔记-----UILabel 详解
IOS开发学习笔记-----UILabel 详解 01 //创建uilabel 02 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMa ...
- IOS开发学习笔记(一)
概述: iOS是苹果开发的手持设备操作系统(iPhone,iPad,iPod touch,iPad mini). 基于UNIX,层次架构:核心操作系统层(Core OS)-> 核心服务层(Cor ...
- ios逆向入门笔记-HOOK-QQ登录
ios逆向入门笔记-HOOK-QQ登录 选择目标 砸壳 基本调试 Reveal+确定目标action及target 利用Logos 进行 hook 后续 选择目标 在经过之前的配置,这次有点小改动= ...
- 开源高仿印象笔记的iOS应用——朝夕笔记(Oncenote)
iOS-Oncenote 这是一款类似于印象笔记Evernote的生活类iOS应用--朝夕笔记 Oncenote.我希望能为更多的iOS开发者提供帮助与服务.当然App中还有不少bug和可扩展的 ...
- mqtt android简书,iOS MQTT协议笔记
前言 接到任务项目需要用MQTT来写消息推送,经过一段时间在网上查看资料后写下这篇文章,文章内容大都来自互联网,在文章最后也会贴出相关网址和Demo.写这文章主要目的是自己总结下经验做下笔记,以便日后 ...
- 2019年年初iOS招人心得笔记(附面试题)
从筛选第一份简历,准备面试题,到成功招到两个人一共花了两个星期多一点,总体来说还是比较顺利的.两位通过者都比较稳重踏实,而且对技术也比较有追求.这也可能和我筛选简历比较谨慎有关系,这次筛选简历所花费的 ...
最新文章
- STM32与DS1302的接口电路
- 科大星云诗社动态20201231
- ubuntu 安装libusb 编译自己写的程序 发现很多undefined(排除包含头文件的问题)
- ethercat主站给从站分配多个地址_Profinet 与 EtherCAT 网关使用方法
- mysql function怎么创建_mysql,function_mysql创建函数出现问题?,mysql,function - phpStudy
- java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
- SharingSphere 源码解析 -- 真实SQL生成探索
- 公司注销后公章怎么处理,自行保管风险
- windows下git安装配置
- 命题逻辑——自由之门与死亡之门
- 高通QFIL9008端口刷机报错问题
- 六轴传感器icm20602的自检和校准学习
- uniapp 实现微信聊天效果 阻止input失焦
- 使用lorax 构建定制化操作系统
- 开源office办公套件
- Silverlight 中文教程第二部分:使用布局管理 (木野狐译)
- 友华改设备标识命令_电信路由器密码怎么修改,路由器牌子是友华通信
- 英文月份简写、星期简写
- 无线投屏没有网络也可以投屏吗?
- 毕业设计选题推荐 - python毕设选题推荐 - 2023最新毕设选题 - 如何选题 避免被坑
热门文章
- GCC在C语言中内嵌汇编 asm __volatile__
- 学点数学(5)--线性规划对偶形式的理解
- Python外(4)-读写mat文件
- 三目运算符_C语言知识点:运算符的优先级和结合性
- clion编写C++ 使用多线程时候,CMakeLists.txt书写,引用-pthread
- 在Ubuntu环境下使用vcpkg安装sqlite_orm包文件
- C++primer第15章节详解面向对象程序设计
- 即时通讯开发(逐行、隔行扫描)
- 最受欢迎的5大Linux发行版
- SQL语句使用大全,最常用的sql语句