MKNetworkKit是一硬度哥们搞出来的http通信framework,因为
ASIHttpRequest已经不在更新了,所以就找到了这个仍然维护的项目。
mk相对与asi在代码结构和提供的api上的确有一些方便之处
MKNetworkKit VS ASIHttpRequestMKNetworkKit 在使用的时候分为两个部分:
1、MKNetworkOperation ≈ ASIHttpRequest (wrap request & response)
2、MKNetworkEngine --- manage queue
使用MK的特色是,我们的viewController只和MKNetworkEngine进行进行交互,对于viewcontroller来说,MK只是⼀一个提供数据的对象,隐藏了关于网络的细节。比如说,url和params。
因此,任何⼀一个网络数据的服务,都需要我们subclass⼀一个MKNetworkEngine。因为每⼀一个engine中的url,已及获取数据的格式不同。
view controller与engine之间的数据交换通过block,这样就可以异步通信
...........................................................................................................................
例,我们要从网站上获取今天的气温,engine提供的接口应该是:
class MyEngine-(float)temperature;//我们不需要提供任何有关网络的信息,只需要要求engine给我们数据...........................................................................................................................
例,下载文件,下面这段代码出现的位置应该是在我们subclass的engine中MKNetworkOperation* operation;
//初始化。。。。
[operation setDownloadStream:[NSOutputStream outputStreamToFileAtPath:@"../.."spend:YES]];//我们唯⼀一要做的事情就是设置下载的outputStream
[self enqueueOperation:operation];//self就是engine,它主要是用来对queue进行管理...........................................................................................................................
例,上传文件
[operation addFile:@"../.." forKey:@"image"];...........................................................................................................................
MK还提供了⼀一些简化用户工作的method,比如可以直接以image,string,data,或json的类型来获取接收到的数据。
MK提供freeze operation功能,假如当前程序进入后台,则当程序回到前台时,过去提交的未完成的operation就会继续执行