一、引入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];
}
分享到:
相关推荐
Java通过JNI调用C函数Demo 需要的人下载看看
SDK的demo程序,以及基于此SDK上将成员函数作为回调函数demo.
c#的基础知识部分,关于构造函数的相关知识。具体见http://www.cnblogs.com/imstrive/p/8763581.html
hive自定义函数demo
npapi 插件 js页面调用插件函数Demo
日常处理数据可以用到的函数,财务工作、日常办公、软件测试工作都可以用到
c++的指针特性学习之函数指针,代码中给出了函数指针的声明方式和使用方式,供大家使用函数指针参考
指针函数的一个小demo,指针函数就是函数,返回类型为指针型。
时间转换demo,能计算用户浏览器时区,时区时间转换,计算昨天、今天、前天
回调函数在安卓中的使用,简单明了,一个demo入门了解回调机制
c语言函数库使用demo 1. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow) 2. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam...
CPP调用JAVA函数Demo 需要的可以下载来看看
回调函数,简易、明了;介绍了如何定义,如何使用
只是回调函数一个基本的demo,诠释了回调的定义和外部调用,数据传输的过程
demo是在学习QT编程是用来练习的小程序,实现鼠标,左键、右键、滚轮事件,键盘按键事件捕获,适合新手参考。
QT中调用dll中的函数,3种方式demo, 1、采用显示链接,调用DLL中全局函数 2、采用显示链接,调用C++类中的类对象、成员函数 3、采用隐式链接方法,通过QLibrary类对DLL中类对象、全局函数的调用
这是使用 CEF 开发时 JavaScript 调用 C++ 函数的例子,详细步骤请见博客文章 http://blog.csdn.net/blackwoodcliff/article/details/78598262
基于 VC++6.0 实现动态库回调函数示例
该资源为本人翻遍大部分帖子、博客、资源等一系列资料自我整合了一套技术分享的Demo,以Java为载体,使用浅显易懂的代码,阐述Lambda表达式 与java的结合使用,以及Stream流的基本方法与collect()、reduce()等...