酷店

KDPNetworkRequestHTTP.m 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. //
  2. // KDPNetworkRequestHTTP.m
  3. // KuDianProject
  4. //
  5. // Created by 学丽 on 2019/7/4.
  6. // Copyright © 2019 KDP. All rights reserved.
  7. //
  8. #import "KDPNetworkRequestHTTP.h"
  9. #import <AdSupport/AdSupport.h>
  10. #import "KDPPhoneLoginViewController.h"
  11. #import "KDPTabBarVC.h"
  12. @implementation KDPNetworkRequestHTTP
  13. + (void)postURL:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure
  14. {
  15. // 1.创建请求管理者
  16. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  17. manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 解析为data
  18. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  19. manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil];
  20. manager.requestSerializer.timeoutInterval = 10;
  21. NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
  22. NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
  23. [manager.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"];
  24. [manager.requestSerializer setValue:SOURCE_ID forHTTPHeaderField:@"source"];
  25. [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"platform"];
  26. if ([KDPAccountTool isLogin]) {
  27. NSString *token = [KDPAccountTool account].token;
  28. [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"];
  29. }
  30. NSString *deviceUUID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
  31. NSString *uuid = [NSString stringWithFormat:@"I-%@",deviceUUID];
  32. [manager.requestSerializer setValue:uuid forHTTPHeaderField:@"idfa"];
  33. // NSString *sex = [[NSUserDefaults standardUserDefaults] objectForKey:UserSexKey];
  34. [manager.requestSerializer setValue:@"0" forHTTPHeaderField:@"sex"];
  35. // 2.发送请求
  36. [manager POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  37. id responseDict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
  38. if ([responseDict[@"errno"] isEqualToString:@"0"]) {
  39. if (!responseDict[@"rst"]) {
  40. success(@{});
  41. }else{
  42. success(responseDict[@"rst"]);
  43. }
  44. }else{
  45. NSString *message=responseDict[@"err"];
  46. if([responseDict[@"errno"] isEqualToString:@"10009"]) {
  47. }else if([responseDict[@"errno"] isEqualToString:@"4001"]) {
  48. //让用户退出
  49. [MBProgressHUD showMessage:@"登录信息过期,请重新登录"];
  50. [self appOpenLogin];
  51. }else if([responseDict[@"errno"] isEqualToString:@"4002"]) {
  52. //让用户退出
  53. [MBProgressHUD showMessage:@"您已在其他设备登录,是否重新登录"];
  54. [self appOpenLogin];
  55. }else if([responseDict[@"errno"] isEqualToString:@"20001"]){
  56. NSLog(@"商品已下架");
  57. [MBProgressHUD showMessage:responseDict[@"err"]];
  58. UIViewController *currentVC = [[self alloc] getCurrentVC];
  59. [currentVC.navigationController popViewControllerAnimated:YES];
  60. }
  61. if (failure) {
  62. failure(nil);
  63. }
  64. }
  65. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  66. NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"];
  67. NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  68. NSLog(@"服务器的错误原因:%@",str);
  69. NSLog(@"报错地址:%@",url);
  70. [MBProgressHUD showError:@"服务器开小差"];
  71. if (failure) {
  72. failure(error);
  73. }
  74. }];
  75. }
  76. +(void)appOpenLogin
  77. {
  78. [[NSNotificationCenter defaultCenter]postNotificationName:@"exitLogin" object:nil];
  79. [KDPAccountTool deleteAccount];
  80. [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:[[UINavigationController alloc]initWithRootViewController:[[KDPPhoneLoginViewController alloc]init]] animated:YES completion:^{
  81. UIViewController *currentVC = [[self alloc] getCurrentVC];
  82. [currentVC.navigationController popToRootViewControllerAnimated:YES];
  83. KDPTabBarVC *tabbar = (KDPTabBarVC *)[UIApplication sharedApplication].keyWindow.rootViewController;
  84. tabbar.selectedIndex = 0;
  85. }];
  86. }
  87. - (UIViewController *)getCurrentVC {
  88. // Find best view controller
  89. UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;
  90. return [self findBestViewController:viewController];
  91. }
  92. -(UIViewController*) findBestViewController:(UIViewController*)vc {
  93. if (vc.presentedViewController) {
  94. // Return presented view controller
  95. return [self findBestViewController:vc.presentedViewController];
  96. } else if ([vc isKindOfClass:[UISplitViewController class]]) {
  97. // Return right hand side
  98. UISplitViewController* svc = (UISplitViewController*) vc;
  99. if (svc.viewControllers.count > 0)
  100. return [self findBestViewController:svc.viewControllers.lastObject];
  101. else
  102. return vc;
  103. } else if ([vc isKindOfClass:[UINavigationController class]]) {
  104. // Return top view
  105. UINavigationController* svc = (UINavigationController*) vc;
  106. if (svc.viewControllers.count > 0)
  107. return [self findBestViewController:svc.topViewController];
  108. else
  109. return vc;
  110. } else if ([vc isKindOfClass:[UITabBarController class]]) {
  111. // Return visible view
  112. UITabBarController* svc = (UITabBarController*) vc;
  113. if (svc.viewControllers.count > 0)
  114. return [self findBestViewController:svc.selectedViewController];
  115. else
  116. return vc;
  117. } else {
  118. // Unknown view controller type, return last child view controller
  119. return vc;
  120. }
  121. }
  122. /**
  123. *普通get请求
  124. */
  125. + (void)getURL:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure
  126. {
  127. // 1.创建请求管理者
  128. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  129. manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 解析为data
  130. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  131. manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil];
  132. manager.requestSerializer.timeoutInterval = 10;
  133. NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
  134. NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
  135. [manager.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"];
  136. [manager.requestSerializer setValue:SOURCE_ID forHTTPHeaderField:@"source"];
  137. [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"platform"];
  138. if ([KDPAccountTool isLogin]) {
  139. NSString *token = [KDPAccountTool account].token;
  140. [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"];
  141. }
  142. NSString *deviceUUID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
  143. NSString *uuid = [NSString stringWithFormat:@"I-%@",deviceUUID];
  144. [manager.requestSerializer setValue:uuid forHTTPHeaderField:@"idfa"];
  145. // NSString *sex = [[NSUserDefaults standardUserDefaults] objectForKey:UserSexKey];
  146. [manager.requestSerializer setValue:@"0" forHTTPHeaderField:@"sex"];
  147. // 2.发送请求
  148. [manager GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  149. id responseDict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
  150. if ([responseDict[@"errno"] isEqualToString:@"0"]) {
  151. if (!responseDict[@"rst"]) {
  152. success(@{});
  153. }else{
  154. success(responseDict[@"rst"]);
  155. }
  156. }else{
  157. NSString *message=responseDict[@"err"];
  158. if([responseDict[@"errno"] isEqualToString:@"10009"]) {
  159. }else if([responseDict[@"errno"] isEqualToString:@"4001"]) {
  160. //让用户退出
  161. [MBProgressHUD showMessage:@"登录信息过期,请重新登录"];
  162. [self appOpenLogin];
  163. }else if([responseDict[@"errno"] isEqualToString:@"4002"]) {
  164. //让用户退出
  165. [self appOpenLogin];
  166. [MBProgressHUD showMessage:@"您已在其他设备登录,是否重新登录"];
  167. }else{
  168. }
  169. if (failure) {
  170. failure(nil);
  171. }
  172. }
  173. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  174. NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"];
  175. NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  176. NSLog(@"服务器的错误原因:%@",str);
  177. NSLog(@"报错地址:%@",url);
  178. [MBProgressHUD showError:@"服务器开小差"];
  179. if (failure) {
  180. failure(error);
  181. }
  182. }];
  183. }
  184. @end