1.引入CTNetworking文件夹,目录结构如下:
WechatIMG26.png
2.自定义网络配置,项目目录结构如下:
WechatIMG28.png
3.CTCTAPIBaseManager使用如下:
1.未创建reformer数据过滤场景
###1.1直接创建一个APIManager类,继承CTAPIBaseManager,并遵守协议CTAPIManager,如下
WechatIMG29.png
WechatIMG30.png
###1.2在控制器里创建APIManager,并实现代理方法,如下图:
WechatIMG33.png
WechatIMG34.png
WechatIMG35.png
2.创建reformer数据过滤场景
2.1创建reformer类继承NSObject,并遵守协议CTAPIManagerDataReformer,实现协议方法如下图:
WechatIMG37.png
WechatIMG38.jpeg
2.2在控制器里创建APIManager同上,代理方法如下:
WechatIMG39.png
CTAPIBaseManager封装使用
使用:[[XHNetworkClient sharedClient] postDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock];
##1.新建一个网络请求管理类继承CTAPIManager,遵守协议CTAPIManager,实现协议方法,如下:
-----------.h文件------------------------
#import <Foundation/Foundation.h>
#import "CTAPIBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XHNetowrkRequestManager : CTAPIBaseManager
<CTAPIManager>
@property (nonatomic, copy) NSString *methodName;
@property (nonatomic, copy) NSString *serviceType;
@property (nonatomic, assign) CTAPIManagerRequestType requestType;
- (BOOL)shouldCache;
-----------.m文件------------------------
#import "XHNetowrkRequestManager.h"
@implementation XHNetowrkRequestManager
- (instancetype)init
{
self = [super init];
if (self) {
//如果有多个services服务(多个baseUrl服务),需创建多个RequestManager和NetworkClient
self.serviceType = kCTServiceChngalaxyService;
}
return self;
}
- (BOOL) shouldCache
{
return NO;
}
@end
##2.新建一个网络工具类,如下.h:
#import <Foundation/Foundation.h>
#import "CTAPIBaseManager.h"
NS_ASSUME_NONNULL_BEGIN
@interface XHNetworkClient : NSObject
+ (instancetype)sharedClient;
//url:https://zlyjtest.chngsl.com/cmty_http/openDoor/remoteDoor path: /openDoor/remoteDoor
- (void)loadDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
methods:(CTAPIManagerRequestType)requestType
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock;
- (void)getDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock;
- (void)postDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock;
@end
#.m
#import "XHNetworkClient.h"
#import "XHNetowrkRequestManager.h"
static XHNetworkClient *singleManager = nil;
@interface XHNetworkClient ()
@property (nonatomic, strong) NSMutableArray *requetManagers;
@end
@implementation XHNetworkClient
+ (instancetype)sharedClient{
static dispatch_once_t oneceToken;
dispatch_once(&oneceToken, ^{
singleManager = [[self alloc] init];
});
return singleManager;
}
- (void)loadDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
methods:(CTAPIManagerRequestType)requestType
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock{
XHNetowrkRequestManager *manager = [[XHNetowrkRequestManager alloc] init];
manager.requestType = requestType;
manager.methodName = path;
__weak typeof(self) weakSelf = self;
[manager setSuccessBlock:^(CTAPIBaseManager *manager) {
if(successBlock){
successBlock(manager);
}
[weakSelf.requetManagers removeObject:manager];
}];
[manager setFailedBlock:^(CTAPIBaseManager *manager) {
if (failedBlock) {
failedBlock(manager);
}
[weakSelf.requetManagers removeObject:manager];
}];
[self.requetManagers addObject:manager];
[manager loadDataWithParams:parmas];
}
- (void)getDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock{
[self loadDataWithParams:parmas path:path methods:CTAPIManagerRequestTypeGet successBlock:successBlock failedBlock:failedBlock];
}
- (void)postDataWithParams:(NSDictionary *)parmas
path:(NSString *)path
successBlock:(CTAPIBaseManagerSuccessBlock) successBlock
failedBlock:(CTAPIBaseManagerFailedBlock)failedBlock{
[self loadDataWithParams:parmas path:path methods:CTAPIManagerRequestTypePost successBlock:successBlock failedBlock:failedBlock];
}
#pragma mark - getter
- (NSMutableArray *)requetManagers{
if(!_requetManagers){
NSMutableArray *manager = [[NSMutableArray alloc] init];
_requetManagers = manager;
}
return _requetManagers;
}