Arclin

Advocate Technology. Enjoy Technology.

0%

网络层方法封装5

网络层方法封装5.2.1

  • 特性
    • 添加链式调用方法
  • 5.1
    • 开启/关闭 Log
    • 自定义 Logger
    • RAC支持
  • 5.2.1
    • 修复了一些 bug
    • 由于服务器异常而返回的 NSData 转为 HTML 页面并展示出来(需要打开 DebugMode)
    • 把链式调用方法抽出为一个 DKHTTPChainTool 类
  1. 添加链式调用方法

链式调用的好处就是要啥参数就添加啥,方便快捷,不用担心代码不够漂亮!

1
2
3
4
5
6
7
8
9
10
11
12
#define DKHTTPChainInstance [[DKHTTPChainTool alloc] init]

/** 链式调用 */
- (DKHTTPChainTool * (^)(NSString *method))method;
- (DKHTTPChainTool * (^)(NSString *url))url;
- (DKHTTPChainTool * (^)(NSDictionary *header))header;
- (DKHTTPChainTool * (^)(DKCacheStrategy strategy))cacheStrategy;
- (DKHTTPChainTool * (^)(DKHTTPParamsVarifyBlock paramsVerify))verifyParams;
- (DKHTTPChainTool * (^)(DKHTTPRequestFilterBlock resultFilter))requestFilter;
- (DKHTTPChainTool * (^)(NSDictionary *params))params;
/** block返回请求Id */
- (NSInteger (^)(DKHTTPResponseBlock responseBlock))execute;

使用起来感觉是这样子的

1
2
3
4
5
6
7
8
9
10
11
12
13
DKHTTPChainInstance.method(@"POST")
.url(@"")
.params(@{@"account":@"m13643046965@163.com",@"password":@"123456"})
.cacheStrategy(DKCacheStrategy_NETWORK_ONLY)
.verifyParams(^NSString *(NSDictionary *params){
return nil;
})
.requestFilter(^DKRequest *(DKRequest *request){
return request;
})
.execute(^(DKResponse *response){
NSLog(@"%@",response.rawData);
});
  • 5.1

开启/关闭 Log

1
DKHTTPSharedTool.showLog = YES/NO;

自定义 Logger

1
2
3
4
5
#define DKLog(...) NSLog(@"%s %zd行 %@",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])

[DKHTTPTool setLogger:^(NSString *msg) {
DKLog(@"%@",msg);
}];

RAC支持

1
- (RACSignal *(^)())executeSignal;

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RACSignal *signal = DKHTTPChainInstance.method(@"POST")
.url()
.header(@{@"token":@"0e83179ac83741416e50b0ea12113f6e"})
.params(@{@"account":@"",@"password":@"123456"})
.cacheStrategy(DKCacheStrategy_NETWORK_ONLY)
.verifyParams(^NSString *(NSDictionary *params){
return nil;
})
.requestFilter(^DKRequest *(DKRequest *request){
return request;
})
.executeSignal();
[signal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
  • 5.2.1

1.DKHTTPTool的链式调用

1
#define DKHTTPChainInstance [[DKHTTPChainTool alloc] init]

使用方法和上面说的一样

2.调试模式

1
2
DKHTTPSharedTool.debugMode = YES; // 开启 Log 和 服务器异常弹窗
如果服务器发生异常,那么就会发生如图情况