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

  1. //
  2. // NetworkManager.m
  3. // HC
  4. //
  5. // Created by huilinLi on 2025/12/15.
  6. //
  7. #import "NetworkManager.h"
  8. #import <AFNetworking/AFNetworking.h>
  9. static NSString * const kBaseURL = @"https://hwjb.homilychart.com/dev/";
  10. //static NSString * const kBaseURL = @"https://dbqb.legu168.cn/testApi/";
  11. @interface NetworkManager ()
  12. @property (nonatomic, strong) AFHTTPSessionManager *sessionManager;
  13. @end
  14. @implementation NetworkManager
  15. + (instancetype)sharedManager {
  16. static NetworkManager *instance;
  17. static dispatch_once_t onceToken;
  18. dispatch_once(&onceToken, ^{
  19. instance = [[NetworkManager alloc] init];
  20. });
  21. return instance;
  22. }
  23. - (instancetype)init {
  24. self = [super init];
  25. if (self) {
  26. // 初始化 AFNetworking
  27. _sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:kBaseURL]];
  28. // 配置请求序列化 (通常是 JSON)
  29. _sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  30. _sessionManager.requestSerializer.timeoutInterval = 30.f; // 超时时间
  31. // 配置响应序列化 (自动解析 JSON)
  32. _sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
  33. // 这里可以配置公共 Header,例如 Token
  34. // [_sessionManager.requestSerializer setValue:@"Bearer token..." forHTTPHeaderField:@"Authorization"];
  35. // 支持的 Content-Types
  36. _sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
  37. }
  38. return self;
  39. }
  40. - (void)GET:(NSString *)url params:(NSDictionary *)params success:(SuccessBlock)success failure:(FailureBlock)failure {
  41. [self.sessionManager GET:url parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  42. if (success) {
  43. success(responseObject);
  44. }
  45. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  46. if (failure) {
  47. // 这里可以做统一的错误处理,比如打印日志,或者处理 401 Token 过期
  48. NSLog(@"Request Failed: %@", error);
  49. failure(error);
  50. }
  51. }];
  52. }
  53. - (void)POST:(NSString *)url params:(NSDictionary *)params success:(SuccessBlock)success failure:(FailureBlock)failure {
  54. [self.sessionManager POST:url parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  55. if (success) {
  56. success(responseObject);
  57. }
  58. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  59. if (failure) {
  60. NSLog(@"Request Failed: %@", error);
  61. failure(error);
  62. }
  63. }];
  64. }
  65. @end