Commit f969a1bacfc941cc1921b1bf74933f66b8af65f5
1 parent
fa671759
no message
Showing
2 changed files
with
18 additions
and
75 deletions
CNLivePlayer/Classes/DataRequest/CNLivePlayerNetworkManager.h
| @@ -24,25 +24,6 @@ typedef void(^GetVideoURLSuccessBlock)(NSString * _Nullable videoURL, NSInteger | @@ -24,25 +24,6 @@ typedef void(^GetVideoURLSuccessBlock)(NSString * _Nullable videoURL, NSInteger | ||
| 24 | 24 | ||
| 25 | + (CNLivePlayerNetworkManager *)manager; | 25 | + (CNLivePlayerNetworkManager *)manager; |
| 26 | 26 | ||
| 27 | -/** | ||
| 28 | - * GET 请求 | ||
| 29 | - * @param URL url | ||
| 30 | - * @param parameters 上传参数 | ||
| 31 | - * @param success 请求成功回调 | ||
| 32 | - * @param failure 请求失败回调 | ||
| 33 | - */ | ||
| 34 | -+ (void)GET:(nullable NSString *)URL parameters:(nullable NSDictionary *)parameters success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success failure:(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure; | ||
| 35 | - | ||
| 36 | -/** | ||
| 37 | - * POST 请求 | ||
| 38 | - * @param URL url | ||
| 39 | - * @param parameters 上传参数 | ||
| 40 | - * @param success 请求成功回调 | ||
| 41 | - * @param failure 请求失败回调 | ||
| 42 | - */ | ||
| 43 | -+ (void)POST:(nullable NSString *)URL parameters:(nullable NSDictionary *)parameters success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success failure:(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure; | ||
| 44 | - | ||
| 45 | - | ||
| 46 | #pragma mark - 针对具体业务 | 27 | #pragma mark - 针对具体业务 |
| 47 | /** | 28 | /** |
| 48 | * 鉴权 | 29 | * 鉴权 |
CNLivePlayer/Classes/DataRequest/CNLivePlayerNetworkManager.m
| @@ -26,7 +26,7 @@ static NSTimeInterval TimeoutInterval = 30.0 ; | @@ -26,7 +26,7 @@ static NSTimeInterval TimeoutInterval = 30.0 ; | ||
| 26 | */ | 26 | */ |
| 27 | static NSURLRequestCachePolicy CachePolicy = NSURLRequestUseProtocolCachePolicy; | 27 | static NSURLRequestCachePolicy CachePolicy = NSURLRequestUseProtocolCachePolicy; |
| 28 | 28 | ||
| 29 | -@interface CNLivePlayerNetworkManager()<NSURLSessionDelegate> | 29 | +@interface CNLivePlayerNetworkManager() |
| 30 | @property (nonatomic, assign) BOOL result; | 30 | @property (nonatomic, assign) BOOL result; |
| 31 | @property (nonatomic, copy) GetVideoURLSuccessBlock successBlock; | 31 | @property (nonatomic, copy) GetVideoURLSuccessBlock successBlock; |
| 32 | 32 | ||
| @@ -54,27 +54,7 @@ static CNLivePlayerNetworkManager *_manager = nil; | @@ -54,27 +54,7 @@ static CNLivePlayerNetworkManager *_manager = nil; | ||
| 54 | return self; | 54 | return self; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | -+ (void)GET:(NSString *)URL parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { | ||
| 58 | - [[CNLivePlayerNetworkManager manager] GET:URL parameters:parameters success:success failure:failure]; | ||
| 59 | - | ||
| 60 | -} | ||
| 61 | - | ||
| 62 | -- (void)GET:(NSString *)URL parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { | ||
| 63 | - NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"GET" URLString:URL parameters:parameters success:success failure:failure]; | ||
| 64 | - [task resume]; | ||
| 65 | -} | ||
| 66 | - | ||
| 67 | -+ (void)POST:(NSString *)URL parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { | ||
| 68 | - [[CNLivePlayerNetworkManager manager] POST:URL parameters:parameters success:success failure:failure]; | ||
| 69 | - | ||
| 70 | -} | ||
| 71 | - | ||
| 72 | -- (void)POST:(NSString *)URL parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { | ||
| 73 | - NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"POST" URLString:URL parameters:parameters success:success failure:failure]; | ||
| 74 | - [task resume]; | ||
| 75 | - | ||
| 76 | -} | ||
| 77 | - | 57 | +#pragma mark - 公共方法 |
| 78 | - (NSURLSessionDataTask *)dataTaskWithRequestMethod:(NSString *)method URLString:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { | 58 | - (NSURLSessionDataTask *)dataTaskWithRequestMethod:(NSString *)method URLString:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure { |
| 79 | 59 | ||
| 80 | if (![URLString isKindOfClass:[NSString class]]) { | 60 | if (![URLString isKindOfClass:[NSString class]]) { |
| @@ -101,7 +81,7 @@ static CNLivePlayerNetworkManager *_manager = nil; | @@ -101,7 +81,7 @@ static CNLivePlayerNetworkManager *_manager = nil; | ||
| 101 | 81 | ||
| 102 | if([method isEqual:@"POST"]){ | 82 | if([method isEqual:@"POST"]){ |
| 103 | [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; | 83 | [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; |
| 104 | - request.HTTPBody =[[CNLiveURLRequestSerialization cn_QueryStringFromParameters:parameters] dataUsingEncoding:NSUTF8StringEncoding]; | 84 | + request.HTTPBody = [[CNLiveURLRequestSerialization cn_QueryStringFromParameters:parameters] dataUsingEncoding:NSUTF8StringEncoding]; |
| 105 | } | 85 | } |
| 106 | 86 | ||
| 107 | NSURLSessionDataTask *task = [self dataTaskWithRequest:request success:success failure:failure]; | 87 | NSURLSessionDataTask *task = [self dataTaskWithRequest:request success:success failure:failure]; |
| @@ -140,30 +120,6 @@ static CNLivePlayerNetworkManager *_manager = nil; | @@ -140,30 +120,6 @@ static CNLivePlayerNetworkManager *_manager = nil; | ||
| 140 | 120 | ||
| 141 | } | 121 | } |
| 142 | 122 | ||
| 143 | -#pragma mark - NSURLSessionDelegate | ||
| 144 | -// 1.接收到服务器的响应 | ||
| 145 | -- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler { | ||
| 146 | - // 允许处理服务器的响应,才会继续接收服务器返回的数据 | ||
| 147 | - completionHandler(NSURLSessionResponseCancel); | ||
| 148 | - _manager.result = YES; | ||
| 149 | - NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; | ||
| 150 | - [CNLivePlayerNetworkManager manager].successBlock([response.URL absoluteString], httpResponse.statusCode); | ||
| 151 | - | ||
| 152 | -} | ||
| 153 | - | ||
| 154 | -// 3.请求成功或者失败(如果失败,error有值) | ||
| 155 | -- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { | ||
| 156 | - // 请求完成,成功或者失败的处理 | ||
| 157 | - if (_manager.result) return; | ||
| 158 | - | ||
| 159 | - NSString *videoUrl302 = error.userInfo[@"NSErrorFailingURLStringKey"]; | ||
| 160 | - if (!videoUrl302 || ![videoUrl302 isKindOfClass:[NSString class]] || videoUrl302.length <= 0) { | ||
| 161 | - videoUrl302 = nil; | ||
| 162 | - } | ||
| 163 | - [CNLivePlayerNetworkManager manager].successBlock(videoUrl302, error.code); | ||
| 164 | - | ||
| 165 | -} | ||
| 166 | - | ||
| 167 | #pragma mark - 针对具体业务 | 123 | #pragma mark - 针对具体业务 |
| 168 | /** | 124 | /** |
| 169 | * 鉴权 | 125 | * 鉴权 |
| @@ -178,15 +134,21 @@ static CNLivePlayerNetworkManager *_manager = nil; | @@ -178,15 +134,21 @@ static CNLivePlayerNetworkManager *_manager = nil; | ||
| 178 | * 获取视频url | 134 | * 获取视频url |
| 179 | */ | 135 | */ |
| 180 | - (void)getVideoURL:(nullable NSString *)URL success:(GetVideoURLSuccessBlock)success { | 136 | - (void)getVideoURL:(nullable NSString *)URL success:(GetVideoURLSuccessBlock)success { |
| 181 | - _manager.successBlock = success; | ||
| 182 | - _manager.result = NO; | ||
| 183 | - | ||
| 184 | - NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; | ||
| 185 | - NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:_manager delegateQueue:[[NSOperationQueue alloc] init]]; | ||
| 186 | - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URL] cachePolicy:_manager.cachePolicy timeoutInterval:_manager.timeoutInterval]; | ||
| 187 | - | ||
| 188 | - NSURLSessionDataTask *task = [session dataTaskWithRequest:request]; | ||
| 189 | - // 启动任务 | 137 | + NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"GET" URLString:URL parameters:nil success:^(NSURLResponse * _Nullable response, id _Nullable responseObject) { |
| 138 | + if(success){ | ||
| 139 | + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; | ||
| 140 | + success([response.URL absoluteString], httpResponse.statusCode); | ||
| 141 | + } | ||
| 142 | + | ||
| 143 | + } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) { | ||
| 144 | + if (success) { | ||
| 145 | + NSString *videoUrl302 = error.userInfo[@"NSErrorFailingURLStringKey"]; | ||
| 146 | + if (!videoUrl302 || ![videoUrl302 isKindOfClass:[NSString class]] || videoUrl302.length <= 0) { | ||
| 147 | + videoUrl302 = nil; | ||
| 148 | + } | ||
| 149 | + success(videoUrl302, error.code); | ||
| 150 | + } | ||
| 151 | + }]; | ||
| 190 | [task resume]; | 152 | [task resume]; |
| 191 | 153 | ||
| 192 | } | 154 | } |