结合AFNetworking 和 MJExtension的二次网络请求的封装:YKNetWorkApi

jopen 9年前

结合AFNetworking 和 MJExtension的二次网络请求的封装

说明

YKNetWorkApi 是对AFNetwork轻量级二次封装,结合MJExtension让网络请求数据更加简单直接,精简AFN网络请求后的block回调,同时针对网络请求返回的json进行模型转化,从而快速的面向模型进行业务开发。YKNetWorkApi包装了get post put delete四种常用的网络请求,还有post图片上传;同时单独利用NSURLConnection实现了put上传图片你的方法(公司特殊需求,内部有httpBody参数拼接的格式);

没有的功能

YKNetWorkApi是轻量级的二次封装,如果你的应用中要设置请求之间的依赖,请求暂停等之类功能,那么不适合使用本套类库,当然也可以在YKNetWorkApi的基础上进行填充。

类的关系图

demo.png

YKNetWorkApi的应用场景部分代码

业务类接口的实现

// .h文件  +(void)getDemoDataWithResponseHandler:(responseHandler)Handler;    // .m实现文件    +(void)getDemoDataWithResponseHandler:(responseHandler)Handler  {      [self getWithUrl:demoDataUrl param:nil resultClass:[DemoAllData class] responseBlock:Handler];  }

控制器中的使用
-(void)loadNetData  {      [AppDemoServices getDemoDataWithResponseHandler:^(DemoAllData *dataObj, NSError *error) {          if (dataObj) {              [self.datas removeAllObjects];              [self.datas addObjectsFromArray:dataObj.data];              [self.tableView reloadData];          } else {              NSLog(@"网络请求发生错误");          }      }];  }  

相关文件的说明

YKHttpTool类
对AFN进行直接包装;内部可以统一设置httpHeader,超时设置;
同时提供了 完整url、json、httpHeader的debug模式下的打印方法,用来调试是再爽不过了;

YKServiceBaseTool类
该类在YKHttpTool基础上进行了字典和模型的转化,同时将请求成功和失败的两个block合并在一个block中,除了方便,在使用时能减少代码行数;
typedef void (^responseHandler)(id dataObj, NSError *error);
该类额外提供了put上传图片;利用NSURLConnection实现,封装了httpBody繁琐的拼接格式;


** 对+(NSString *)vilidClassName方法的说明 **

该方法是为了获得YKServiceBaseTool直接子类的类名,通过类名,在库中自带的一个setting.plist文件中获取host地址;

*对+(NSString *)compeletHttpUrlWithSubUrl:(NSString *)subUrl方法的说明 *

方法是进行完整的url拼接,追加https前缀 (如果是http 自行修改一下)
拼接host从而得到完整的url,如果子类传入的url是完整url,这个方法将无效;

YKNetWorkUrlDocument

这个文件是 字符串常量文件,作者喜欢把出去url中的路径全部以字符串常量的形式记录到这里,除了比较整齐以外,方便进行接口统计和和统一修改,(如果你不喜欢,可以不用,直接删除这个文件)

其他说明

YKNetWorkApi并不强大,是作者开发经验刚满一年的一些成果总结,YKNetWorkApi的主要目的是能够精简的进行网络请求,让代码看起来整齐一点;如果有意见和建议,欢迎交流,作者是个热爱学习和分享的人;
**微博:鸣2010


项目主页:
http://www.open-open.com/lib/view/home/1438848387661