JLXXNetWorking
示例
网络请求类,改编自YTKNetWork
要运行示例项目,请克隆存储库,然后从 Example 目录首先运行 pod install
。
要求
安装
JLXXNetWorking 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile:
pod 'JLXXNetWorking'
使用教程参考YTKNetWork
新增项
JLXXRequestConfig && JLXXRequest新增项
- responseStatusCodeKey
- successStatusCode
- responseDescriptionKey
通常服务器返回的json数据中,本次请求的状态码关键字:code,值为200,代表成功,当然了,一个提示语:message,是少不了的,当请求成功,即code的值为200的话,request的success的回调将被调用,否则fail的回调被调用,此时request.error.desc为message的值:“操作成功”
{
"code": 200,
"data": {
"version": "1.0.1"
},
"message": "操作成功"
}
但是有时候,服务器返回的json数据中,有自己的规则,状态码关键字:res_code,值为P001,代表成功,提示语:res_msg
{
"res_code": "P001",
"data": {
"version": "1.0.1"
},
"res_msg": "操作成功"
}
此时就可以在JLXXRequestConfig,做统一的配置
[JLXXRequestConfig sharedInstance].responseStatusCodeKey = @"res_code";
[JLXXRequestConfig sharedInstance].responseDescriptionKey = @"res_msg";
[JLXXRequestConfig sharedInstance].successStatusCode = @[@"P001",@"200"];
也可以在每个具体的JLXXRequest子类中,给出相对应的属性
- (NSArray *)successStatusCode{
return @[@"P001"]
}
JLXXBatchRequest新增项
@property (nonatomic , assign) BOOL isRefresh;
- (instancetype)initWithAlwaysRequests:(NSArray<JLXXRequest *> *)alwaysRequests refreshRequests:(NSArray<JLXXRequest *> *)refreshRequests;
}
这里常见于一个页面有多个网络请求,下拉刷新的时候全部请求,上拉加载更多的时候,只加载某一个或几个请求,refreshRequests里的request,在上拉加载时,不会请求
{
JLXXHomeBannerRequest *bannerRequest = [[JLXXHomeBannerRequest alloc] init];
JLXXHomeTermListTequest *termList = [[JLXXHomeTermListTequest alloc] init];
JLXXHomeGetLiveRequest *getLive = [[JLXXHomeGetLiveRequest alloc] init];
JLXXBatchRequest *batchRequest = [[JLXXBatchRequest alloc] initWithAlwaysRequests:@[getLive] refreshRequests:@[bannerRequest,termList] isRefresh: self.isRefresh];
[batchRequest startWithCompletionBlockWithCallBack:^(JLXXBatchRequest * _Nonnull batchRequest) {
NSArray *bannerArray = [NSArray array];
if ([batchRequest requestInSuccessRequestArray:bannerRequest]) {
bannerArray = [JLXXHomeBannerModel mj_objectArrayWithKeyValuesArray:banner.responseObject[@"data"]];
[self addData:@[bannerArray] inSection:0];
}else if(self.isRefresh){//bannerArray没有数据,清空数据,因为是下拉刷新,如果没有数据,需要清空
[self addData:@[bannerArray] inSection:0];
}
NSArray *termListArray = [NSArray array];
if ([batchRequest requestInSuccessRequestArray:termList]) {
termListArray = [JLXXHomeTermListModel mj_objectArrayWithKeyValuesArray:termList.responseObject[@"data"]];
[self addData:@[termListArray] inSection:1];
}else if(self.isRefresh){//termListArray没有数据,清空数据,因为是下拉刷新,如果没有数据,需要清空
[self addData:@[termListArray] inSection:1];
}
NSArray *roomList = [NSArray array];
if ([batchRequest requestInSuccessRequestArray:getLive]) {
roomList = [JLXXHomeLiveModel mj_objectArrayWithKeyValuesArray:getLive.responseObject[@"info"]];
}else if(self.isRefresh){
[AlertTool showErrorInView:self.view withTitle:getLive.error.localizedDescription];
}
[self addData:roomList inSection:2];
} allRequestFailure:^(JLXXBatchRequest * _Nonnull batchRequest) {
}];
}
作者
cnsuer, [email protected]
许可证
JLXXNetworking遵循MIT许可证。详细信息请参阅LICENSE文件。