`
zcw_java
  • 浏览: 305539 次
  • 性别: 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"是一个小型的示例程序,用于演示如何声明、定义和使用返回值为指针类型的函数。在iOS开发中,尽管Objective-C提供了更现代的面向对象的特性,但了解C语言基础,包括指针函数,对于深入理解内存...

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

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

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

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

    回调函数DEMO.rar

    在这个"回调函数DEMO.rar"中,我们可以期待看到一系列关于如何在DELPHI中实现和使用回调函数的例子。可能包括以下知识点: 1. **函数指针**:在DELPHI中,函数指针是一种类型,它能够存储函数的地址,从而使我们...

    c语言函数使用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...

    回调函数demo

    在C++中,回调函数可以与函数指针、成员函数指针、lambda表达式以及函数对象(functors)一起使用,提供高度的灵活性。然而,需要注意的是,回调函数的使用需要谨慎,因为它们可能导致程序结构复杂化,特别是当涉及...

    工厂接口虚函数抽象函数单例DEMO

    在"工厂接口虚函数抽象函数单例DEMO"中,我们将探讨这些概念在ASP.NET C#中的应用。 首先,让我们了解这些关键概念: 1. **工厂接口**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,尤其是在...

    DLL 回调函数 + Demo示例程序,VS2017 x64

    本资源"DLL 回调函数 + Demo示例程序,VS2017 x64"提供了在Visual Studio 2017 64位环境下关于DLL回调函数的实例,确保在Debug和Release模式下都能正常运行。 首先,我们需要理解DLL是什么。DLL是动态链接库,它是...

    demo_FieldII例程_计算制定阵列的响应函数_DEMO_

    这个DEMO示例旨在演示如何使用FieldII来计算并分析一个特定线性阵列的响应函数。 首先,我们需要了解阵列天线的基本概念。阵列天线是由多个单元天线按照特定规律排列组成的系统,通过调整各单元的相位关系,可以...

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

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

    安卓开发中的回调函数的Demo

    这个Demo展示了如何在安卓开发中使用回调函数处理异步操作。回调函数是安卓开发中的核心概念,理解并熟练掌握回调机制对于编写高效、响应式的应用程序至关重要。在实际开发中,还可以利用现代编程工具如Kotlin的协程...

    Hook C++简单使用Demo

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

    明华 读卡器 API 使用手册 Demo

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

    删除文件夹函数C++代码(有demo)

    通过这个Demo,你可以学习到如何在实际项目中使用这些API函数,以及如何编写C++代码来处理文件系统的操作。 需要注意的是,这种删除操作是不可逆的,所以在执行前应确保你有足够的权限,并且知道你正在删除的内容。...

    C++回调函数的2个DEMO程序,整理修改by唐太咸

    这里面有两个运用回调函数的DEMO程序 1.其中tcCallBack的作用是希望通过将Receiver类的...2.另外一个tcFunctionTemplate是使用std::function模板和std::bind,支持全局和类成员函数作为回调函数,我在VS2010下编译通过

    arcplan函数练习demo例子

    本资源“arcplan函数练习demo例子”旨在帮助用户深入理解和熟练掌握arcplan中的各种函数应用,通过实际操作提升使用技巧。 arcplan的核心在于其函数库,这些函数可以对数据进行处理、计算、转换和分析,以满足各种...

    fft.rar_66 fft_C6678 fft Demo_DEMO_fft函数_fft函数程序

    标题中的"fft.rar_66 fft_C6678 fft Demo_DEMO_fft函数_fft函数程序"揭示了这个压缩包文件的主要内容,它涉及到快速傅里叶变换(FFT)的C6678处理器上的实现以及一个DEMO示例。C6678是TI(德州仪器)公司TMS320C66x...

    Demo3D培训课程ppt

    在Demo3D中,不支持创建类库(Class),但可以使用.NET现有类库;不支持类型为数列(Array)、对象(Object)或函数(Function)的常量;不能调用含有变量列表(params)的方法;函数不能指定返回值的类型;Demo3D中...

    GT400SG函数库说明及Demo

    "Demo2.6"是提供的一个示例程序,它展示了如何使用GT400SG函数库进行实际的运动控制。通过分析和运行Demo,开发者可以直观地理解函数库的工作原理,学习如何调用各种函数来控制运动设备,如设置速度、加速度、位置等...

Global site tag (gtag.js) - Google Analytics