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:];
[params setObject:@"get数据1" forKey:@"arg1"];
[params setObject:@"get数据2" forKey:@"arg2"]; //最后的斜杠不能丢掉,不然会出问题
MKNetworkOperation *operation = [engine operationWithPath:@"/yii/testApp/index.php?r=httpTest/getTest/"
params:params
httpMethod:@"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:];
[params setObject:@"post数据1" forKey:@"arg1"];
[params setObject:@"post数据2" forKey:@"arg2"]; MKNetworkOperation *operation = [engine operationWithPath:@"/yii/testApp/index.php?r=httpTest/postTest/"
params:params
httpMethod:@"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[];
NSString *downloadPath = [cachesDirectory stringByAppendingPathComponent:@"x.iso"]; //判断之前是否下载过 如果有下载重新构造Header
NSMutableDictionary *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:downloadPath
append: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笔记的更多相关文章

  1. iOS 字符串处理笔记

    iOS字符串处理笔记,包括如何使用正则表达式解析,NSScanner扫描,设置和使用CoreParse解析器来解析处理自定义符号等内容 搜索 在一个字符串中搜索子字符串 最灵活的方法 - (NSRan ...

  2. IOS懒人笔记应用源码

    这个源码是懒人笔记应用源码,也是一个已经上线的apple应用商店的应用,懒人笔记iOS客户端源码,支持语音识别,即将语音转化成文本文字,所用语音识别类库为讯飞语音类库. 懒人笔记是一款为懒人设计的笔记 ...

  3. iOS:地图笔记

    地图笔记 01. CLLocation -------------------------------------------------------- CLLocationManager 定位管理者 ...

  4. iOS菜鸟成长笔记(3)——斯坦福公开课学习(1)

    一.iOS四层结构 1.Core OS 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能, ...

  5. iOS菜鸟成长笔记(1)——第一个iOS应用

    前言:阳光小强最近抽时间学习iOS开发,在学习过程中发现了很多有趣的东西也遇到了很多问题,为了在学习过程中能和大家交流,记录下学习的心得和学习成果,所以就有了这一个系列文章,希望这一系列文章能形成一个 ...

  6. iOS音频学习笔记二:iOS SDK中与音频有关的相关框架

      上层:       Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...

  7. iOS音频学习笔记一:常见音频封装格式及编码格式

    (1) pcm格式    pcm是经过话筒录音后直接得到的未经压缩的数据流    数据大小=采样频率*采样位数*声道*秒数/8     采样频率一般是22k或者44k,位数一般是8位或者16位,声道一 ...

  8. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  9. iOS并发编程笔记【转】

    线程 使用Instruments的CPU strategy view查看代码如何在多核CPU中执行.创建线程可以使用POSIX 线程API,或者NSThread(封装POSIX 线程API).下面是并 ...

随机推荐

  1. Oracle11g dump 部分参数解读

    一.Oracle dump expdp CONTENT   ALL  ALL ,将导出对象定义及其所有数据  DATA_ONLY  DATA_ONLY,只导出对象数据  METADATA_ONLY   ...

  2. docker容器,镜像常用操作

    1.查看正在运行的容器 docker ps 查看所有容器 docker ps -a 2.查看容器日志 docker logs -f showdoc 3.删除所有容器 docker rm $(docke ...

  3. (转)git合并多个commit

    原文地址:http://platinhom.github.io/2016/01/02/git-combine_commit/ 有时commit多了看着会不爽.所以想合并掉一些commit. 这里是最简 ...

  4. dependencies与dependencyManagement的区(转自:http://blog.csdn.net/liutengteng130/article/details/46991829)

    在上一个项目中遇到一些jar包冲突的问题,之后还有很多人分不清楚dependencies与dependencyManagement的区别,本篇文章将这些区别总结下来. 1.DepencyManagem ...

  5. 互评Beta版本——王者荣耀交流协会的PSP DAILY作品

    基于NABCD评论,及改进建议 1)N(Need 需求) 开发本软件有利于我们记录PSP,省时省力.方便快捷.这样我们能充份的利用时间. 2)A(Approach 做法) 王者荣耀交流协会进行了网上调 ...

  6. Python入门——第一个Python程序

    1.1 Hello Python书写步骤 步骤一:新建文本文档文件,修改名称为hello.py 步骤二:使用记事本打开文件,书写程序内容如下: print("hello python&quo ...

  7. windows运行打开服务命令

    1. gpedit.msc-----组策略    2. sndrec32-------录音机   3. Nslookup-------IP地址侦测器   4. explorer-------打开资源管 ...

  8. I.MX6 Linux Serial Baud Rate hacking

    /******************************************************************************** * I.MX6 Linux Seri ...

  9. 原生js实现数据的双向绑定

    原生js实现数据的双向绑定 需要了解的属性是原色js的Object.definePrototype(obj,pop,descript); obj:被构造的对象 pop:被构造的对象的属性,创建对象或修 ...

  10. android中的两种上下文区别

    1.this    继承于content      子类 2.getAppliCationContext()     返回值为context    父类 父类有的子类都有,子类父类不一定有. 在对话框 ...