File | Date | Author | Commit |
---|---|---|---|
Docs | 2022-01-04 | 77。 | [fdb36a] Update README |
KJNetworkPlugin | 2022-01-21 | 77。 | [9a91df] Add warning plugin |
KJNetworkPlugin.xcodeproj | 2022-01-21 | 77。 | [627fc8] Update test case |
KJNetworkPlugin.xcworkspace | 2021-11-07 | Zz | [234856] feat:empty plugin |
KJNetworkPluginTests | 2022-01-21 | 77。 | [eef147] Add network plugin |
NetworkPlugin | 2022-01-21 | 77。 | [9a91df] Add warning plugin |
Pods | 2022-01-21 | 77。 | [e4b1f6] Add party libraries |
.gitignore | 2021-09-25 | Zz | [7a1732] update gitignore |
KJNetworkPlugin.podspec | 2022-01-21 | 77。 | [5e79ff] Pod 1.0.16 |
LICENSE | 2021-07-25 | Zz | [6cdbd2] docs:update License |
Podfile | 2022-01-21 | 77。 | [c8f940] Add toast party libraries |
Podfile.lock | 2022-01-21 | 77。 | [c8f940] Add toast party libraries |
README.md | 2022-01-21 | 77。 | [cfacfc] Update README |
README_EN.md | 2022-01-21 | 77。 | [cfacfc] Update README |
- 插件版网络请求可以更方便快捷的定制专属网络请求,并且支持批量操作,链式操作
/// 根路径地址
@property (nonatomic, strong, class) NSString *baseURL;
/// 基本参数,类似:userID,token等
@property (nonatomic, strong, class) NSDictionary *baseParameters;
/// 插件版网络请求
/// @param request 请求体
/// @param success 成功回调
/// @param failure 失败回调
+ (void)HTTPPluginRequest:(KJNetworkingRequest *)request
success:(KJNetworkPluginSuccess)success
failure:(KJNetworkPluginFailure)failure;
/// 开始准备网络请求
/// @param request 请求相关数据
/// @param response 响应数据
/// @param endRequest 是否结束下面的网络请求
/// @return 返回缓存数据,successResponse 不为空表示存在缓存数据
- (KJNetworkingResponse *)prepareWithRequest:(KJNetworkingRequest *)request
response:(KJNetworkingResponse *)response
endRequest:(BOOL *)endRequest;
/// 网络请求开始时刻请求
/// @param request 请求相关数据
/// @param response 响应数据
/// @param stopRequest 是否停止网络请求
/// @return 返回网络请求开始时刻插件处理后的数据
- (KJNetworkingResponse *)willSendWithRequest:(KJNetworkingRequest *)request
response:(KJNetworkingResponse *)response
stopRequest:(BOOL *)stopRequest;
/// 成功接收数据
/// @param request 接收成功数据
/// @param response 响应数据
/// @param againRequest 是否需要再次请求该网络
/// @return 返回成功插件处理后的数据
- (KJNetworkingResponse *)succeedWithRequest:(KJNetworkingRequest *)request
response:(KJNetworkingResponse *)response
againRequest:(BOOL *)againRequest;
/// 失败处理
/// @param request 失败的网络活动
/// @param response 响应数据
/// @param againRequest 是否需要再次请求该网络
/// @return 返回失败插件处理后的数据
- (KJNetworkingResponse *)failureWithRequest:(KJNetworkingRequest *)request
response:(KJNetworkingResponse *)response
againRequest:(BOOL *)againRequest;
/// 准备返回给业务逻辑时刻调用
/// @param request 请求相关数据
/// @param response 响应数据
/// @param error 错误信息
/// @return 返回最终加工之后的数据
- (KJNetworkingResponse *)processSuccessResponseWithRequest:(KJNetworkingRequest *)request
response:(KJNetworkingResponse *)response
error:(NSError **)error;
目前已有13款插件供使用:
// 测试链式网络请求
- (void)testChainNetworking{
XCTestExpectation * expectation = [self expectationWithDescription:@"test chain."];
KJNetworkingRequest * request = [[KJNetworkingRequest alloc] init];
request.method = KJNetworkRequestMethodGET;
request.ip = @"https://www.httpbin.org";
request.path = @"/ip";
request.responseSerializer = KJSerializerJSON;
[KJNetworkChainManager HTTPChainRequest:request failure:^(NSError * error) {
XCTFail(@"%@", error.localizedDescription);
}]
.chain(^__kindof KJNetworkingRequest * _Nullable(id _Nonnull responseObject) {
KJNetworkingRequest * request = [[KJNetworkingRequest alloc] init];
request.ip = @"https://www.httpbin.org";
request.path = @"/post";
request.params = {
"ip": responseObject["origin"]
};
return request;
})
.lastChain(^(id _Nonnull responseObject) {
[expectation fulfill];
});
[self waitForExpectationsWithTimeout:300 handler:nil];
}
// 测试批量网络请求
- (void)testBatchNetworking{
XCTestExpectation * expectation = [self expectationWithDescription:@"test batch."];
NSMutableArray * array = [NSMutableArray array];
{
KJNetworkingRequest * request = [[KJNetworkingRequest alloc] init];
request.method = KJNetworkRequestMethodGET;
request.path = @"/headers";
request.responseSerializer = KJSerializerJSON;
[array addObject:request];
}{
KJNetworkingRequest * request = [[KJNetworkingRequest alloc] init];
request.method = KJNetworkRequestMethodGET;
request.path = @"/ip";
[array addObject:request];
}
KJBatchConfiguration * configuration = [KJBatchConfiguration sharedBatch];
configuration.maxQueue = 3;
configuration.requestArray = array.mutableCopy;
[KJNetworkBatchManager HTTPBatchRequestConfiguration:configuration reconnect:^BOOL(NSArray<KJNetworkingRequest *> * _Nonnull reconnectArray) {
return YES;
} complete:^(NSArray<KJBatchResponse *> * _Nonnull result) {
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:300 handler:nil];
}