2024-06-07 13:38:31 +08:00

173 lines
6.7 KiB
Objective-C

//
// HBNetWorking.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 <AFMultipartFormData> 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 <AFMultipartFormData> 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