JLXXNetWorking 1.4.2

JLXXNetWorking 1.4.2

cnsuer维护。



  • cnsuer

JLXXNetWorking

License MIT Platform

示例

网络请求类,改编自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文件。