diff --git a/YBNetwork.podspec b/YBNetwork.podspec index cbe1945..68263bf 100644 --- a/YBNetwork.podspec +++ b/YBNetwork.podspec @@ -23,6 +23,7 @@ Pod::Spec.new do |s| s.source_files = "YBNetwork/**/*.{h,m}" s.dependency 'AFNetworking' + s.dependency 'YYCache', '~>1.0.4' s.requires_arc = true diff --git a/YBNetwork/Manger/YBBaseRequest+Internal.h b/YBNetwork/Manger/YBBaseRequest+Internal.h index c2cba36..f192611 100644 --- a/YBNetwork/Manger/YBBaseRequest+Internal.h +++ b/YBNetwork/Manger/YBBaseRequest+Internal.h @@ -16,7 +16,10 @@ NS_ASSUME_NONNULL_BEGIN - (NSString *)requestMethodString; /// 请求 URL 字符串 -- (NSString *)requestURLString; +- (NSString *)validRequestURLString; + +/// 请求参数字符串 +- (id)validRequestParameter; @end diff --git a/YBNetwork/Manger/YBNetworkManager.m b/YBNetwork/Manger/YBNetworkManager.m index 94172b1..fee9dea 100644 --- a/YBNetwork/Manger/YBNetworkManager.m +++ b/YBNetwork/Manger/YBNetworkManager.m @@ -139,8 +139,8 @@ - (NSNumber *)startNetworkingWithRequest:(YBBaseRequest *)request uploadProgress // 构建网络请求数据 NSString *method = [request requestMethodString]; AFHTTPRequestSerializer *serializer = [self requestSerializerForRequest:request]; - NSString *URLString = [self URLStringForRequest:request]; - id parameter = [self parameterForRequest:request]; + NSString *URLString = [request validRequestURLString]; + id parameter = [request validRequestParameter]; // 构建 URLRequest NSError *error = nil; @@ -175,22 +175,6 @@ - (AFHTTPRequestSerializer *)requestSerializerForRequest:(YBBaseRequest *)reques return serializer; } -- (NSString *)URLStringForRequest:(YBBaseRequest *)request { - NSString *URLString = [request requestURLString]; - if ([request respondsToSelector:@selector(yb_preprocessURLString:)]) { - URLString = [request yb_preprocessURLString:URLString]; - } - return URLString; -} - -- (id)parameterForRequest:(YBBaseRequest *)request { - id parameter = request.requestParameter; - if ([request respondsToSelector:@selector(yb_preprocessParameter:)]) { - parameter = [request yb_preprocessParameter:parameter]; - } - return parameter; -} - - (AFHTTPSessionManager *)sessionManagerForRequest:(YBBaseRequest *)request { AFHTTPSessionManager *manager = request.sessionManager; if (!manager) { diff --git a/YBNetwork/YBBaseRequest.m b/YBNetwork/YBBaseRequest.m index 316b31e..0d07dbd 100644 --- a/YBNetwork/YBBaseRequest.m +++ b/YBNetwork/YBBaseRequest.m @@ -276,7 +276,7 @@ - (void)clearRequestBlocks { } - (NSString *)requestIdentifier { - NSString *identifier = [NSString stringWithFormat:@"%@-%@%@", [self requestMethodString], [self requestURLString], [self stringFromParameter:self.requestParameter]]; + NSString *identifier = [NSString stringWithFormat:@"%@-%@%@", [self requestMethodString], [self validRequestURLString], [self stringFromParameter:[self validRequestParameter]]]; return identifier; } @@ -310,12 +310,23 @@ - (NSString *)requestMethodString { } } -- (NSString *)requestURLString { +- (NSString *)validRequestURLString { NSURL *baseURL = [NSURL URLWithString:self.baseURI]; NSString *URLString = [NSURL URLWithString:self.requestURI relativeToURL:baseURL].absoluteString; + if ([self respondsToSelector:@selector(yb_preprocessURLString:)]) { + URLString = [self yb_preprocessURLString:URLString]; + } return URLString; } +- (id)validRequestParameter { + id parameter = self.requestParameter; + if ([self respondsToSelector:@selector(yb_preprocessParameter:)]) { + parameter = [self yb_preprocessParameter:parameter]; + } + return parameter; +} + #pragma mark - getter - (YBNetworkCache *)cacheHandler { diff --git a/YBNetworkDemo/TestCase/TestViewController.m b/YBNetworkDemo/TestCase/TestViewController.m index cb8126b..35f4e6a 100644 --- a/YBNetworkDemo/TestCase/TestViewController.m +++ b/YBNetworkDemo/TestCase/TestViewController.m @@ -53,12 +53,18 @@ - (void)clickButton:(UIButton *)button { - (void)searchA { DefaultServerRequest *request = [DefaultServerRequest new]; + request.cacheHandler.writeMode = YBNetworkCacheWriteModeMemoryAndDisk; + request.cacheHandler.readMode = YBNetworkCacheReadModeAlsoNetwork; request.requestMethod = YBRequestMethodGET; request.requestURI = @"charconvert/change.from"; request.requestParameter = @{@"key":@"0e27c575047e83b407ff9e517cde9c76", @"type":@"2", @"text":@"呵呵呵呵"}; __weak typeof(self) weakSelf = self; - [request startWithSuccess:^(YBNetworkResponse * _Nonnull response) { + [request startWithCache:^(YBNetworkResponse * _Nonnull response) { + __strong typeof(weakSelf) self = weakSelf; + if (!self) return; + NSLog(@"\ncache success : %@", response.responseObject); + } success:^(YBNetworkResponse * _Nonnull response) { __strong typeof(weakSelf) self = weakSelf; if (!self) return; NSLog(@"\nresponse success : %@", response.responseObject);