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:];
[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笔记的更多相关文章
- iOS 字符串处理笔记
iOS字符串处理笔记,包括如何使用正则表达式解析,NSScanner扫描,设置和使用CoreParse解析器来解析处理自定义符号等内容 搜索 在一个字符串中搜索子字符串 最灵活的方法 - (NSRan ...
- IOS懒人笔记应用源码
这个源码是懒人笔记应用源码,也是一个已经上线的apple应用商店的应用,懒人笔记iOS客户端源码,支持语音识别,即将语音转化成文本文字,所用语音识别类库为讯飞语音类库. 懒人笔记是一款为懒人设计的笔记 ...
- iOS:地图笔记
地图笔记 01. CLLocation -------------------------------------------------------- CLLocationManager 定位管理者 ...
- iOS菜鸟成长笔记(3)——斯坦福公开课学习(1)
一.iOS四层结构 1.Core OS 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能, ...
- iOS菜鸟成长笔记(1)——第一个iOS应用
前言:阳光小强最近抽时间学习iOS开发,在学习过程中发现了很多有趣的东西也遇到了很多问题,为了在学习过程中能和大家交流,记录下学习的心得和学习成果,所以就有了这一个系列文章,希望这一系列文章能形成一个 ...
- iOS音频学习笔记二:iOS SDK中与音频有关的相关框架
上层: Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...
- iOS音频学习笔记一:常见音频封装格式及编码格式
(1) pcm格式 pcm是经过话筒录音后直接得到的未经压缩的数据流 数据大小=采样频率*采样位数*声道*秒数/8 采样频率一般是22k或者44k,位数一般是8位或者16位,声道一 ...
- iOS开发学习笔记
1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...
- iOS并发编程笔记【转】
线程 使用Instruments的CPU strategy view查看代码如何在多核CPU中执行.创建线程可以使用POSIX 线程API,或者NSThread(封装POSIX 线程API).下面是并 ...
随机推荐
- 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
<?php /**文件处理flock 文件锁定 pathinfo realpath tmpfile tempname */ /*$arr=pathinfo('ab.txt');//获取文件路径的 ...
- Taffy自动化测试框架Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 本页面适用所有基于taffy/nose框架编写的自动化测试脚本,或基于un ...
- 【DevExpress v17.2新功能预告】WinForms上的图表增强
在WinForms Charts v17.2中,我们新增了一些有用的功能,开发人员和最终用户可能都会喜欢. 基于标准的过滤 Chart控件已经支持一系列的过滤,但是在这个版本中,我们用FilterCr ...
- spring入门程序编写
1.导入jar包
- STL标准库-迭代器
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 本节主要介绍STL六大部件中的Iterators迭代器. 在语言方面讲,容器是一个class template, 算法是一个仿函 ...
- GitLab项目迁移到Gerrit
1.在Gerrit上新建项目: 2.Gerrit项目配置权限(此处非代码): Reference:refs/* Push Annotated Tag Push Signed Tag Forge Com ...
- 在C++里一个类成员函数多少行代码才是最好呢?
这个问题,很多同事以及学生都问我这个问题.其实这是一个比较实际的问题,因为设计一个类成员函数的好与坏,决定了一个类代码的质量. 为了回答这个问题,昨晚又重新看看斯坦福大学的编程视频,可以用下面这个截图 ...
- OC基础:类和对象 分类: ios学习 OC 2015-06-12 18:55 17人阅读 评论(0) 收藏
OC:Objective-c 面向对象的c语言,简称obj-c或者OC OC和C的区别 1.OC是C语言的超集,OC是在C语言的基础上结合smalltalk的优点,开发出来的语言.oc兼容所有 ...
- iOS 证书 设置指南
点击这里跳转到改链接:http://docs.jpush.cn/pages/viewpage.action?pageId=1343727
- JS禁止用F5键
//禁止用F5键 function document.onkeydown() { if ( event.keyCode==116) { event.keyCode = 0; event.cancelB ...