MKNetworkKit 是一个使用十分方便,功能又十分强大、完整的iOS网络编程代码库,完全基于 ARC。它只有两个类, 它的目标是使用像AFNetworking这么简单,而功能像ASIHTTPRequest(已经停止维护)那么强大。
1、高度的轻量级,仅仅只有2个主类;
2、自主操作多个网络请求;
3、更加准确的显示网络活动指标;
4、自动设置网络速度,实现自动的2G、3G、wifi切换;
5、自动缓冲技术的完美应用,实现网络操作记忆功能,当你掉线了又上线后,会继续执行未完成的网络请求;
6、可以实现网络请求的暂停功能;
7、准确无误的成功执行一次网络请求,摒弃后台的多次请求浪费;
8、支持图片缓冲;
9、支持ARC机制;
10、在整个app中可以只用一个队列(queue),队列的大小可以自动调整。
1、从https://github.com/MugunthKumar/MKNetworkKit下载MKNetworkKit;
2、将下载包中的 MKNetWorkKit 文件夹拖到你新建的工程中;
3、在项目设置中添加3个依赖框架:
1)SystemConfiguration.framework,
2)CFNetwork.framework,
3)Security.framework
4、注意:.pch文件路径(一定要注意!!!!!)
5、注意: HostName不需要加"http://", 程序会自动添加, 主机要指向一个目录, 不可以是一个具体文件, 如上类不可以是"www.***.net/json/conn.asp"
MKNetworkKit中主要有两个类:MKNetworkOperation和MKNetworkEngine。MKNetworkOperation是NSOperation的子类并且封装了请求相应类,我们需要为每一个网络请求创建一个MKNetworkOperation。MKNetworkEngine负责管理网络队列,对于简单的请求,我们应该直接使用MKNetworkEngine的方法,对于复杂的需求,我们可以子类化MKNetworkEngine。下面就介绍基本的网络实现,其中包括GET请求和POST请求:
-(void)loadGet{
MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"www.***.net" customHeaderFields:nil];
MKNetworkOperation *op = [engine operationWithPath:@"json/conn.asp?id=235" params:nil httpMethod:@"GET"];
[op addCompletionHandler:^(MKNetworkOperation *completedOperation) {
NSLog(@"%@",[completedOperation responseString]);
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
}];
[engine enqueueOperation:op];
}
-(void)loadPost{
MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"192.168.2.176:9502/api" customHeaderFields:nil];
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 addCompletionHandler:^(MKNetworkOperation *completedOperation) {
NSLog(@"%@",[completedOperation responseString]);
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
}];
[engine enqueueOperation:op];
}