一、引入MKNetworkKit
1,添加MKNetworkKit的到工程目录。
2,添加的CFNetwork.Framework,SystemConfiguration.framework,Security.framework和ImageIO.Framework。
3,PCH文件包含MKNetworkKit.h
4,如果您正在构建针对iOS,删除NSAlert + MKNetworkKitAdditions.h文件。
5,如果您正在构建的Mac,删除UIAlertView + MKNetworkKitAdditions.h文件。
二、MKNetworkKit类
1,MKNetworkOperation
2,MKNetworkEngine
3,辅助类(apple' Reachability) and categories,网络以及扩展
1.1 -(MKStoreKit添加应用内购买)对于使用MKNetworkKit,你需要知道的方法由两个类MKNetworkOperation MKNetworkEngine。MKNetworkOperation与ASIHttpRequest相似。这是一个NSOperation的子类,包装你的请求和响应类。创建一个MKNetworkOperation用于管理应用内请求时序等问题。
2.1 -MKNetworkEngine是一个伪单例类,负责管理你的app的网络队列。因此,简单的请求时,你应该直接使用MKNetworkEngine的方法。在更为复杂的定制中,你应该继承它。每一个MKNetworkEngine的子类都有他自己的Reachability对象来通知服务器的连通情况。可以考虑为特别的REST服务器请求都通过继承MKNetworkEngine。因为是伪单例模式,每一个单独的子类的请求,都会通过仅有的队列发送。
MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"192.168.2.176:9502/api"
customHeaderFields:nil];
MKNetworkOperation *op = [engine operationWithPath:@"login.php?userid=admin&userpwd=123" params:nil httpMethod:@"GET"];
[op onCompletion:^(MKNetworkOperation *operation){
NSLog(@"request string: %@",[op responseString]);
}
onError:^(NSError *error){
}];
[engine enqueueOperation:op];
//post
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"admin" forKey:@"username"];
[dic setValue:@"123" forKey:@"password"];
MKNetworkOperation *op = [engine operationWithPath:@"user.do" params:dic httpMethod:@"POST"];
[op onCompletion:^(MKNetworkOperation *operation) {
NSLog(@"post response string :%@",[op responseString]);
} onError:^(NSError *error) {
DLog(@"%@", error);
}];
[engine enqueueOperation:op];
解析json
//接口使用的是天气接口
static MKNetworkEngine *engine;
+(MKNetworkEngine *)defaultEngine{
if (engine == nil) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
engine = [[MKNetworkEngine alloc] initWithHostName:@"m.weather.com.cn"
customHeaderFields:nil];//initWithHostName 只写主机名,不要加http//,代码会自动加上
});
}
return engine;
}
MKNetworkOperation *operation = [engine operationWithPath:@"/data/101010100.html" params:nil httpMethod:@"GET"];
//operationWithPath 写后缀名 使用GET方法
[operation addCompletionHandler:^(MKNetworkOperation *completedOperation) {
//******** 返回json 直接解析json
id json = [completedOperation responseJSON]; //有现成的返回json方法可直接调用
NSDictionary *weatherDic = (NSDictionary *)json;//json里面本身就是字典,所以直接把json转换成dictionary
NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];
NSString *city = [weatherInfo objectForKey:@"city"];
NSString *date_y = [weatherInfo objectForKey:@"date_y"];
NSString *fl1 = [weatherInfo objectForKey:@"fl1"];
NSString *fl2 = [weatherInfo objectForKey:@"fl2"];
self.textlable.text = [NSString stringWithFormat:@"%@ \n %@ \n %@ \n %@",city,date_y,fl1,fl2]; //赋值
//
NSLog(@"%@",[completedOperation responseJSON]); //返回json
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
}];
[engine enqueueOperation:op];
}
分享到:
相关推荐
这个"指针函数demo"是一个小型的示例程序,用于演示如何声明、定义和使用返回值为指针类型的函数。在iOS开发中,尽管Objective-C提供了更现代的面向对象的特性,但了解C语言基础,包括指针函数,对于深入理解内存...
下面我们将深入探讨回调函数的概念、定义以及如何在实际代码中使用。 一、回调函数的概念 回调函数本质上是一个被其他函数调用的函数,它可以在适当的时候(如某个任务完成、条件满足时)执行。这种设计模式特别...
c++的指针特性学习之函数指针,代码中给出了函数指针的声明方式和使用方式,供大家使用函数指针参考
"MFC 多个窗口消息共享同一个消息处理函数demo"就是这样一个示例,它展示了如何在MFC应用中实现这一功能。 首先,我们需要理解MFC中的消息机制。在MFC中,窗口类(如CWnd)继承自CObject,并且覆盖了默认的消息映射...
时间转换demo,能计算用户浏览器时区,时区时间转换,计算昨天、今天、前天
在"工厂接口虚函数抽象函数单例DEMO"中,我们将探讨这些概念在ASP.NET C#中的应用。 首先,让我们了解这些关键概念: 1. **工厂接口**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,尤其是在...
QT中调用dll中的函数,3种方式demo, 1、采用显示链接,调用DLL中全局函数 2、采用显示链接,调用C++类中的类对象、成员函数 3、采用隐式链接方法,通过QLibrary类对DLL中类对象、全局函数的调用
本资源"DLL 回调函数 + Demo示例程序,VS2017 x64"提供了在Visual Studio 2017 64位环境下关于DLL回调函数的实例,确保在Debug和Release模式下都能正常运行。 首先,我们需要理解DLL是什么。DLL是动态链接库,它是...
这个DEMO示例旨在演示如何使用FieldII来计算并分析一个特定线性阵列的响应函数。 首先,我们需要了解阵列天线的基本概念。阵列天线是由多个单元天线按照特定规律排列组成的系统,通过调整各单元的相位关系,可以...
《明华读卡器API使用手册Demo》是一个针对明华品牌的读卡器API的详细指导文档,旨在帮助开发者高效地利用API实现与读卡器的交互。本手册包含了API的相关库文件、使用手册以及多种编程语言的示例代码,使得开发者能够...
在这个DEMO中,重点在于如何使用GUI显示函数图像。首先,我们需要创建一个GUI窗口,这通常通过`GUIDE`(GUI Development Environment)工具或者编程方式完成。在MATLAB代码中,我们可以通过`figure`函数来创建一个新的...
这个Demo展示了如何在安卓开发中使用回调函数处理异步操作。回调函数是安卓开发中的核心概念,理解并熟练掌握回调机制对于编写高效、响应式的应用程序至关重要。在实际开发中,还可以利用现代编程工具如Kotlin的协程...
3. **获取目标函数地址**:使用GetProcAddress函数从QQ程序的动态链接库中获取目标函数的地址。 4. **设置Hook**:使用ReplaceFunction或者VTableHook等方法,将目标函数的地址替换为我们自己的Hook函数地址。如果...
通过这个Demo,你可以学习到如何在实际项目中使用这些API函数,以及如何编写C++代码来处理文件系统的操作。 需要注意的是,这种删除操作是不可逆的,所以在执行前应确保你有足够的权限,并且知道你正在删除的内容。...
"Demo2.6"是提供的一个示例程序,它展示了如何使用GT400SG函数库进行实际的运动控制。通过分析和运行Demo,开发者可以直观地理解函数库的工作原理,学习如何调用各种函数来控制运动设备,如设置速度、加速度、位置等...
本实验报告主要涵盖了Python编程中的函数使用,包括函数的定义、参数传递、变量作用域以及模拟内置函数等多个方面。通过一系列的任务,旨在帮助学习者掌握Python函数的核心概念和实际应用。 1. **函数的定义与使用*...
本Demo主要展示了如何在Flex中进行函数之间的参数传递,以便实现不同功能模块之间的数据交互。下面将详细解释相关知识点。 1. **ActionScript基础**: Flex主要使用ActionScript作为其编程语言,它是一种基于...
总结,Linux下的函数符号冲突是动态链接时需要注意的问题,解决方法包括使用命名空间、重命名函数、版本管理、调整链接顺序等。理解这些概念并熟练应用,对于编写稳定、可靠的Linux程序至关重要。