// // QJNetWorking.m // QinJiuTV // // Created by 秦九 on 2024/4/29. // #import "HtyoNetWorking.h" @implementation HtyoNetWorking + (AFHTTPSessionManager *)sharedManager { static AFHTTPSessionManager *manager; static dispatch_once_t once; dispatch_once(&once, ^{ manager = [AFHTTPSessionManager manager]; // manager.completionQueue = dispatch_queue_create("project.networking.queue", DISPATCH_QUEUE_SERIAL); manager.requestSerializer = [AFJSONRequestSerializer serializer]; //说明接收格式为json格式 manager.responseSerializer = [AFJSONResponseSerializer serializer]; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy]; securityPolicy.validatesDomainName = NO; securityPolicy.allowInvalidCertificates = YES; manager.securityPolicy = securityPolicy; manager.requestSerializer.HTTPShouldHandleCookies = YES; manager.requestSerializer.timeoutInterval = 60; [manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; ((AFJSONResponseSerializer *)manager.responseSerializer).removesKeysWithNullValues = YES; // manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil]; }); return manager; } + (void)requestWithHTTPMethod:(HTTPMethod)method URLString:(nonnull NSString *)URLString parameters:(nullable NSDictionary *)parameters success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure{ [self requestWithHTTPMethod:method URLString:URLString authorization:nil parameters:parameters success:success failure:failure]; } + (void)requestWithHTTPMethod:(HTTPMethod)method URLString:(nonnull NSString *)URLString authorization:(nullable NSString *)authorization parameters:(nullable NSDictionary *)parameters success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { [self requestWithHTTPMethod:method URLString:URLString headers:@{@"Authorization":authorization} parameters:parameters success:success failure:failure]; } + (void)requestWithHTTPMethod:(HTTPMethod)method URLString:(nonnull NSString *)URLString headers:(nullable NSDictionary *)headers parameters:(nullable NSDictionary *)parameters success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { AFHTTPSessionManager *manager = [HtyoNetWorking sharedManager]; for(NSString * key in headers.allKeys) { NSString * value = headers[key]; if (value && value.length) [manager.requestSerializer setValue:value forHTTPHeaderField:key]; } switch (method) { case HTTPMethodGet: { [manager GET:URLString parameters:parameters headers:nil progress:nil success:success failure:failure]; break; } case HTTPMethodHead: { [manager HEAD:URLString parameters:parameters headers:nil success:^(NSURLSessionDataTask *_Nonnull task) { if (success) success(task,nil);} failure:failure]; break; } case HTTPMethodPost: { [manager POST:URLString parameters:parameters headers:nil progress:nil success:success failure:failure]; break; } case HTTPMethodPut: { [manager PUT:URLString parameters:parameters headers:nil success:success failure:failure]; break; } case HTTPMethodDelete: { [manager DELETE:URLString parameters:parameters headers:nil success:success failure:failure]; break; } default: break; } } + (void)postRequestWithURLString:(nonnull NSString *)URLString parameters:(nullable NSDictionary *)parameters constructingBodyWithBlock:(nullable void (^)(id formData))block progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { [self postRequestWithURLString:URLString authorization:nil parameters:parameters constructingBodyWithBlock:block progress:uploadProgress success:success failure:failure]; } + (void)postRequestWithURLString:(nonnull NSString *)URLString authorization:(nullable NSString *)authorization parameters:(nullable NSDictionary *)parameters constructingBodyWithBlock:(nullable void (^)(id formData))block progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure{ AFHTTPSessionManager *manager = [HtyoNetWorking sharedManager]; if (authorization && authorization.length)[manager.requestSerializer setValue:authorization forHTTPHeaderField:@"Authorization"]; [manager POST:URLString parameters:parameters headers:nil constructingBodyWithBlock:block progress:uploadProgress success:success failure:failure]; } @end