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).下面是并 ...
随机推荐
- Webserivce简单安全验证
最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebService的安全授权这个方面进行了一下研究,以前调 ...
- Oracle 12c新特性(For DBA)
一: Multitenant Architecture (12.1.0.1) 多租户架构是Oracle 12c(12.1)的新增重磅特性,内建的多分租(Multi-tenancy),一个容器 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 投资银行的IT部门——不同之处与常见误解
投资银行的IT部门——不同之处与常见误解 说了这么多投资银行,投行里面的IT部门究竟是做什么的呢?在过去,投资银行仅靠纸.笔.计算器就能做生意了.但是在今天,所有的部门都要依靠IT技术.交易部门甚至是 ...
- HDTunePro汉化版温度显示不正常后需要更改
查找:2564B046000000002564B043替换:2564A848000000002564A1E6 查找:B0432F2564B046替换:A1E62F2564A848
- kindle看扫描版pdf的解决办法
(1)先把PDF crop (2)转JPEG (3)JPEG根据kindle的屏幕的分辨率,调整JPEG图像大小,kindle whater paper 大小为1448*1072 (4) 最后把j ...
- IntelliJ IDEA 2017.01配置jdk和tomcat
之前开发Web项目都是用myeclipse或者eclipse,最近想用IDEA这个编辑器去配置一个Web项目,因为是新手,加上对界面的操作不熟练,所以在配置的过程中遇到了一些难题.最后配置成功,并且可 ...
- 【ssm】拦截器的原理及实现
一.背景: 走过了双11,我们又迎来了黑色星期五,刚过了黑五,双12又将到来.不管剁手的没有剁手的,估计这次都要剁手了!虽然作为程序猿的我,没有钱但是我们长眼睛了,我们关注到的是我们天猫.淘宝.支付宝 ...
- asp.net mvc 快捷下拉列表
各种表单中可能经常会遇到使用各种下拉列表的地方, 有些数据是从数据库来的, 有些则是固定数值, 为了方便, 快速的构造一个可以保持状态的下拉列表, 就出现了下面的方法 2分钟构思的代码, 比较粗糙, ...
- MySQL性能优化方法四:SQL优化
原文链接:http://isky000.com/database/mysql-performance-tuning-sql 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需 ...