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

//
// 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