You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
//
|
|
// NetworkManager.m
|
|
// HC
|
|
//
|
|
// Created by huilinLi on 2025/12/15.
|
|
//
|
|
|
|
#import "NetworkManager.h"
|
|
#import <AFNetworking/AFNetworking.h>
|
|
|
|
static NSString * const kBaseURL = @"https://hwjb.homilychart.com/dev/";
|
|
//static NSString * const kBaseURL = @"https://dbqb.legu168.cn/testApi/";
|
|
|
|
@interface NetworkManager ()
|
|
@property (nonatomic, strong) AFHTTPSessionManager *sessionManager;
|
|
@end
|
|
|
|
@implementation NetworkManager
|
|
|
|
+ (instancetype)sharedManager {
|
|
static NetworkManager *instance;
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
instance = [[NetworkManager alloc] init];
|
|
});
|
|
return instance;
|
|
}
|
|
|
|
- (instancetype)init {
|
|
self = [super init];
|
|
if (self) {
|
|
// 初始化 AFNetworking
|
|
_sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:kBaseURL]];
|
|
|
|
// 配置请求序列化 (通常是 JSON)
|
|
_sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
|
|
_sessionManager.requestSerializer.timeoutInterval = 30.f; // 超时时间
|
|
|
|
// 配置响应序列化 (自动解析 JSON)
|
|
_sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
|
|
|
|
// 这里可以配置公共 Header,例如 Token
|
|
// [_sessionManager.requestSerializer setValue:@"Bearer token..." forHTTPHeaderField:@"Authorization"];
|
|
|
|
// 支持的 Content-Types
|
|
_sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)GET:(NSString *)url params:(NSDictionary *)params success:(SuccessBlock)success failure:(FailureBlock)failure {
|
|
[self.sessionManager GET:url parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
|
if (success) {
|
|
success(responseObject);
|
|
}
|
|
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
|
|
if (failure) {
|
|
// 这里可以做统一的错误处理,比如打印日志,或者处理 401 Token 过期
|
|
NSLog(@"Request Failed: %@", error);
|
|
failure(error);
|
|
}
|
|
}];
|
|
}
|
|
|
|
- (void)POST:(NSString *)url params:(NSDictionary *)params success:(SuccessBlock)success failure:(FailureBlock)failure {
|
|
[self.sessionManager POST:url parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
|
|
if (success) {
|
|
success(responseObject);
|
|
}
|
|
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
|
|
if (failure) {
|
|
NSLog(@"Request Failed: %@", error);
|
|
failure(error);
|
|
}
|
|
}];
|
|
}
|
|
|
|
@end
|