`
zcw_java
  • 浏览: 303011 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用MKNetworkKit函数Demo

阅读更多
一、引入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];
}
分享到:
评论

相关推荐

    VB6环境纯Win32 API函数写窗口,VB6使用Unicode版API函数Demo

    "VB6使用Unicode版API函数Demo"部分强调了使用Unicode字符集的API函数。Unicode是一种包含几乎世界上所有字符的编码标准,确保了跨语言和跨平台的文本处理能力。在VB6中,默认使用的是ANSI字符集,但为了支持多语言...

    自写的回调函数demo

    在这个“自写的回调函数demo”中,我们重点探讨Delphi 7环境下如何实现回调机制,以及它在数据传输过程中的应用。 首先,让我们深入理解回调函数的基本概念。在Delphi 7中,回调函数通常通过指针来实现,这个指针...

    c++函数指针使用demo

    c++的指针特性学习之函数指针,代码中给出了函数指针的声明方式和使用方式,供大家使用函数指针参考

    MFC 多个窗口消息共享同一个消息处理函数demo

    "MFC 多个窗口消息共享同一个消息处理函数demo"就是这样一个示例,它展示了如何在MFC应用中实现这一功能。 首先,我们需要理解MFC中的消息机制。在MFC中,窗口类(如CWnd)继承自CObject,并且覆盖了默认的消息映射...

    时间转换函数demo

    时间转换demo,能计算用户浏览器时区,时区时间转换,计算昨天、今天、前天

    CPP调用JAVA函数Demo

    标题 "CPP调用JAVA函数Demo" 涉及的核心技术是C++(CPP)与Java(JAVA)之间的互操作性,这通常通过Java Native Interface(JNI)实现。JNI是Java平台标准的一部分,允许Java代码和其他语言写的代码进行交互。在这个...

    npapi插件浏览器调插件函数Demo

    这个"npapi插件浏览器调用插件函数Demo"是关于如何使用NPAPI来实现JavaScript与浏览器插件之间的交互的一个示例。在本文中,我们将深入探讨NPAPI插件的工作原理、回调机制以及如何在JavaScript中调用插件函数。 ...

    明华读卡器API使用手册Demo

    《明华读卡器API使用手册Demo》是一个针对明华品牌的读卡器设备提供的开发者资源包,它包含了必要的工具和文档,帮助程序员更好地理解和使用明华读卡器的API功能。这个压缩包主要包括以下几个部分: 1. **动态链接...

    Qt调用dll中的功能函数demo

    QT中调用dll中的函数,3种方式demo, 1、采用显示链接,调用DLL中全局函数 2、采用显示链接,调用C++类中的类对象、成员函数 3、采用隐式链接方法,通过QLibrary类对DLL中类对象、全局函数的调用

    函数式编程以及lambda表达式技术分享Demo

    该资源为本人翻遍大部分帖子、博客、资源等一系列资料自我整合了一套技术分享的Demo,以Java为载体,使用浅显易懂的代码,阐述Lambda表达式 与java的结合使用,以及Stream流的基本方法与collect()、reduce()等...

    demo_滤波函数_DEMO_

    本篇将详细讲解如何使用`scipy.signal.filtfilt()`函数来实现滤波,并通过DEMO演示其用法。 `scipy.signal.filtfilt()`是scipy库中的一个滤波函数,它提供了一个零相位滤波(zero-phase filtering)的方法。这个...

    unifrnd_demo_DEMO_随机数unifrnd函数_

    在`unifrnd_demo.m`这个DEMO文件中,通常会展示如何使用`unifrnd`函数生成随机数序列,并可能包括对生成结果的可视化展示,比如绘制直方图或者散点图,以验证生成的随机数符合均匀分布。 `matlab自带的一个函数,...

    明华 读卡器 API 使用手册 Demo

    《明华读卡器API使用手册Demo》是一个针对明华品牌的读卡器API的详细指导文档,旨在帮助开发者高效地利用API实现与读卡器的交互。本手册包含了API的相关库文件、使用手册以及多种编程语言的示例代码,使得开发者能够...

    Demo3D 程序 API 离线手册 20170331_Demo3D技术_demo3d_

    例如,`Demo3D.CreateObject()`函数用于在场景中创建新对象,`Demo3D.Object.SetPosition()`用于设置对象的位置,`Demo3D.Object.Rotate()`则用于对象的旋转操作。这些API的使用需要对三维坐标系统、变换矩阵等基础...

    Hook C++简单使用Demo

    3. **获取目标函数地址**:使用GetProcAddress函数从QQ程序的动态链接库中获取目标函数的地址。 4. **设置Hook**:使用ReplaceFunction或者VTableHook等方法,将目标函数的地址替换为我们自己的Hook函数地址。如果...

    Delphi 回调函数范例

    在提供的压缩包文件“Delphi回调函数”中,可能包含了使用回调函数的示例代码,这些代码可能会演示如何定义函数类型、创建函数指针、赋值和调用回调函数等基本操作。通过学习这些实例,你可以更好地理解Delphi中回调...

    简单MFC的Demo,常用公共函数dll

    这个“简单MFC的Demo”是一个示例项目,它包含了一些常用的公共函数,并封装在一个DLL(动态链接库)中。DLL是一种可重用代码的模块,多个程序可以共享同一份内存映像,从而节省资源并提高效率。 首先,让我们详细...

    python函数实验报告.doc

    本实验报告主要涵盖了Python编程中的函数使用,包括函数的定义、参数传递、变量作用域以及模拟内置函数等多个方面。通过一系列的任务,旨在帮助学习者掌握Python函数的核心概念和实际应用。 1. **函数的定义与使用*...

    Linux C函数库参考手册完整版 含Linux C函数使用手册chm 中文pdf格式

    Linux C函数库参考手册是一套Linux C函数使用手册,这里还提供了LinuxC函数手册chm,帮助大家查找。在Linux下,使用到的C语言函数中文手册,全都有实例,如果你是大神,完全不需要,如果你对英文的手册感到头疼,...

    CEF:JavaScript 调用 C++ 函数 Demo(VS2013)

    这是使用 CEF 开发时 JavaScript 调用 C++ 函数的例子,详细步骤请见博客文章 http://blog.csdn.net/blackwoodcliff/article/details/78598262

Global site tag (gtag.js) - Google Analytics