您的位置:首页 > 运维架构

关于MKNetworking自己维护

2016-02-24 20:40 441 查看

关于MKNetworking自己维护

个人比较偏向MKNetworking,因为在小项目里这个网络请求框架可以说是很轻量级。但是里边有一部分功能缺失或者是功能富余,以及需要优化的地方。所以决定自己来维护一个MK的repo以便自己使用。

GITHUB:MKNetworking-DLProtecting这里大家可以看到源码以及DEMO工程。

0.INIT

创建Engin

NSDictionary*customHeader=@{
@"version":@"0.0.1",
@"channel":@"appleStore"
};
MKNetworkEngine*engin=[[MKNetworkEnginealloc]initWithHostName:@"api.devdylan.com"apiPath:@"MKNetFrame"customHeaderFields:customHeader];

//使用缓存
[enginuseCache];


创建Operation并添加回调

执行

1.GET

//-GET/DOWNLOAD-//

//使用operationWithPath:创建operation,会自动拼接engin的HOST与apiPath等
MKNetworkOperation*operation=[enginoperationWithPath:@"Student.json"params:nilhttpMethod:@"GET"ssl:NO];

//使用operationWithURLString:创建operation,不会拼接engin的HOST与apiPath
MKNetworkOperation*operation_url=[enginoperationWithURLString:@"http://api.devdylan.com/MKNetFrame/Student.json"params:nilhttpMethod:@"GET"];

NSLog(@"%@",operation.url);
NSLog(@"%@",operation_url.url);

[operationaddCompletionHandler:^(MKNetworkOperation*completedOperation){

//这里处理请求正确的时候
NSLog(@"%@",completedOperation.responseJSON);

if([completedOperationisCachedResponse]){

//你现在得到的是缓存中的数据
}else{

//你现在得到的是服务器的数据
}

}errorHandler:^(MKNetworkOperation*completedOperation,NSError*error){

//这里返回服务器级的错误或者是JSON解析等错误.
NSLog(@"%@",completedOperation.error);
}];

//执行当前网络请求
[enginenqueueOperation:operation];

2.POST

//-POST/UPLOAD-//
MKNetworkOperation*operation_post=[enginoperationWithPath:@"Student.json"params:nilhttpMethod:@"POST"ssl:NO];

[operation_postaddCompletionHandler:^(MKNetworkOperation*completedOperation){

//这里处理请求正确的时候
NSLog(@"%@",completedOperation.responseJSON);
}errorHandler:^(MKNetworkOperation*completedOperation,NSError*error){

//这里返回服务器级的错误或者是JSON解析等错误.
NSLog(@"%@",completedOperation.error);
}];

[enginenqueueOperation:operation_postforceReload:YES];//设置不读缓存

3.UPLOAD

//添加路径下文件
[operation_postaddFile:@"FILEPATH"forKey:@"image.png"];
//添加Data
[operation_postaddData:[NSDatadata]forKey:@"image2.png"];

[operation_postonUploadProgressChanged:^(doubleprogress){

//上传进度
}];

4.DOWNLOAD

//下载文件时,添加下载流
[operationaddDownloadStream:[NSOutputStreamoutputStreamToFileAtPath:@"downloadPath/image.png"append:YES]];

[operationonDownloadProgressChanged:^(doubleprogress){

//下载进度
}];

5.FORCELOAD

[enginenqueueOperation:operation_postforceReload:YES];//设置不读缓存

6.FREEZABLE

//设置当前operation冻结
[operation_postsetFreezable:YES];

//解除冻结
[operation_postsetFreezable:NO];

7.OTHERS

[operation_postonNotModified:^{

//在服务器304时调用
}];

//取消请求
[operation_postcancelOperation];

//只在WIFI情况下请求,默认为NO
engin.wifiOnlyMode=YES;
//取消该引擎下所有的网络请求
[engincancelAllOperation];
//移除某一个网络请求
[enginremoveOperation:operation_post];
//清空缓存
[enginemptyCache];

[enginsetReachabilityChangedHandler:^(NetworkStatusstatu){

//处理网络状态发生变化的回掉
}];

[operation_postsetOperationStateChangedHandler:^(MKNetworkOperationStatestate){

//当operation状态发生变化时回掉到这里
}];


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: