netWorkManager.m 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
  1. //
  2. // netWorkManager.m
  3. // 隐私保护
  4. //
  5. // Created by xd h on 2023/10/8.
  6. //
  7. #import "netWorkManager.h"
  8. #import "AFNetworkReachabilityManager.h"
  9. #import "AFHTTPSessionManager.h"
  10. //#import "RcGameWQKeyChain.h"
  11. #import "iPhone.h"
  12. @interface netWorkManager ()
  13. {
  14. AFHTTPSessionManager *manager;
  15. NSString *mCloudService;
  16. //NSString *mRequstAPI;
  17. AFHTTPSessionManager *managerNAS;
  18. }
  19. @end
  20. @implementation netWorkManager
  21. static netWorkManager *Game_NetWorkShareInstance = nil;
  22. +(netWorkManager *)shareInstance;
  23. {
  24. static dispatch_once_t onceToken;
  25. dispatch_once(&onceToken, ^{
  26. Game_NetWorkShareInstance = [[netWorkManager alloc]init];
  27. });
  28. return Game_NetWorkShareInstance;
  29. }
  30. - (id)init
  31. {
  32. self = [super init];
  33. if (self) {
  34. [self initManager];
  35. }
  36. return self;
  37. }
  38. - (void)initManager
  39. {
  40. mCloudService = CloudService;
  41. if ([mCloudService rangeOfString:@"https"].location != NSNotFound)
  42. {
  43. manager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:mCloudService]];
  44. }
  45. else
  46. {
  47. manager = [AFHTTPSessionManager manager];
  48. }
  49. manager.requestSerializer = [AFJSONRequestSerializer serializer];
  50. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  51. [manager.requestSerializer setHTTPShouldHandleCookies:NO];
  52. [manager.requestSerializer setHTTPShouldUsePipelining:NO];
  53. manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain",@"application/xml",@"image/png", @"audio/aac", @"text/x-vcard",nil];
  54. manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];
  55. //设置当前语言
  56. NSString * preferredLanguage = @"zh";
  57. //NSArray *arLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
  58. //NSLog(@"arLanguages:%@",arLanguages);
  59. ///获取设备当前地区的代码和APP语言环境
  60. NSString *languageCode = [NSLocale preferredLanguages][0];
  61. //目前支持 中文(简体 繁体) 英文 日语
  62. if([languageCode rangeOfString:@"zh-Hans"].location != NSNotFound)
  63. {
  64. preferredLanguage = @"zh";
  65. }
  66. else if([languageCode rangeOfString:@"zh-Hant"].location != NSNotFound)
  67. {
  68. preferredLanguage = @"zh-TW";
  69. }
  70. else if([languageCode rangeOfString:@"ja-"].location != NSNotFound)
  71. {
  72. preferredLanguage = @"ja";
  73. }
  74. else{
  75. preferredLanguage = @"en";
  76. }
  77. [manager.requestSerializer setValue:preferredLanguage forHTTPHeaderField:@"Accept-Language"];
  78. // 请求头里添加版本号
  79. //[manager.requestSerializer setValue:@"1.0" forHTTPHeaderField:@"rc-sdk"];
  80. //[manager.requestSerializer setValue:@"1" forHTTPHeaderField:@"rc-platform"]; //iOS 1 安卓0
  81. // NSString *version = [NSString stringWithFormat:@"v%@", [IPhoneInfoAndToolsManager appVersion]];
  82. // NSString *uuid = [IPhoneInfoAndToolsManager phoneDeviceUuid];
  83. // [manager.requestSerializer setValue:version forHTTPHeaderField:@"versionName"];
  84. // [manager.requestSerializer setValue:uuid forHTTPHeaderField:@"devicesId"];
  85. [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"Source-Type"];
  86. NSString *DeviceModel = [iTools getCurrentDeviceModel];
  87. if(DeviceModel){
  88. [manager.requestSerializer setValue:DeviceModel forHTTPHeaderField:@"Devices"];
  89. }
  90. // NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  91. // if (curSN) {
  92. // [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
  93. // }
  94. //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
  95. NSString *curOaidStr = [iPhone phoneDeviceUuid];
  96. if(curOaidStr){
  97. [manager.requestSerializer setValue:curOaidStr forHTTPHeaderField:@"OAID"];
  98. }
  99. NSString *vers = [iPhone appVersion];
  100. if(vers){
  101. [manager.requestSerializer setValue:vers forHTTPHeaderField:@"versionName"];
  102. }
  103. if ([mCloudService rangeOfString:@"https"].location != NSNotFound)
  104. {
  105. [manager setSecurityPolicy:[self customSecurityPolicy]];
  106. }
  107. // 客户端是否信任非法证书
  108. // manager.securityPolicy.allowInvalidCertificates = YES;
  109. // // 是否在证书域字段中验证域名
  110. // [manager.securityPolicy setValidatesDomainName:NO];
  111. manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  112. // manager.securityPolicy.allowInvalidCertificates = YES; //还是必须设成YES
  113. // 设置超时时间(设置有效)
  114. //[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
  115. manager.requestSerializer.timeoutInterval = 180;
  116. //[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
  117. }
  118. - (void)setAFHTTPSessionManagerFunBy:(NSInteger)tcpPort
  119. {
  120. NSString *ip = @"127.0.0.1";
  121. NSNumber *proxyPort = [NSNumber numberWithInteger:tcpPort];
  122. NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
  123. config.connectionProxyDictionary = @
  124. {
  125. @"HTTPEnable":@YES,
  126. @"HTTPProxy" : ip,
  127. @"HTTPPort" : proxyPort,
  128. @"HTTPSEnable":@YES,
  129. @"HTTPSProxy": ip,
  130. @"HTTPSPort": proxyPort
  131. };
  132. managerNAS = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:config];
  133. managerNAS.requestSerializer = [AFJSONRequestSerializer serializer];
  134. managerNAS.responseSerializer = [AFJSONResponseSerializer serializer];
  135. [managerNAS.requestSerializer setHTTPShouldHandleCookies:NO];
  136. [managerNAS.requestSerializer setHTTPShouldUsePipelining:NO];
  137. managerNAS.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain",@"application/xml",@"image/png", @"audio/aac", @"text/x-vcard",nil];
  138. managerNAS.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];
  139. //if ([NASService rangeOfString:@"https"].location != NSNotFound)
  140. if ([ksharedAppDelegate.NASFileByBoxService rangeOfString:@"https"].location != NSNotFound)
  141. {
  142. [managerNAS setSecurityPolicy:[self customSecurityPolicy]];
  143. }
  144. }
  145. #pragma - mark 证书相关
  146. - (AFSecurityPolicy*)customSecurityPolicy
  147. {
  148. // // /先导入证书
  149. // NSString *cerName = @"newrelease";
  150. // if ([@"https://client.phone.androidscloud.com" isEqualToString:CloudService])
  151. // {
  152. // cerName = @"newrelease";
  153. // }
  154. // else if ([@"https://prese.phone.androidscloud.com" isEqualToString:CloudService])
  155. // {
  156. // cerName = @"newrelease";
  157. // }
  158. // NSString *cerPath = [[NSBundle mainBundle] pathForResource:cerName ofType:@"cer"];//证书的路径
  159. // NSData *certData = [NSData dataWithContentsOfFile:cerPath];
  160. // AFSSLPinningModeCertificate 使用证书验证模式、、、//AFSSLPinningModeNone 不使用SSLPinning //AFSSLPinningModeCertificate 使用SSLPinning
  161. AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  162. // if ([@"https://test.androidscloud.com" isEqualToString:CloudService])
  163. // {
  164. // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  165. // }
  166. // else if ([@"https://pre.androidscloud.com" isEqualToString:CloudService])
  167. // {
  168. // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  169. // }
  170. // else if ([@"https://a.androidscloud.com" isEqualToString:CloudService])
  171. // {
  172. // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  173. // }
  174. // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
  175. // 如果是需要验证自建证书,需要设置为YES
  176. securityPolicy.allowInvalidCertificates = NO;
  177. //validatesDomainName 是否需要验证域名,默认为YES;
  178. //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
  179. //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
  180. //如置为NO,建议自己添加对应域名的校验逻辑。
  181. securityPolicy.validatesDomainName = YES;
  182. // securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:certData, nil];
  183. return securityPolicy;
  184. }
  185. #pragma - mark 证书相关
  186. //- (AFSecurityPolicy*)customSecurityPolicy
  187. //{
  188. // // /先导入证书
  189. // NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"ca" ofType:@"cer"];//证书的路径
  190. //
  191. // if ([@"https://client.androidscloud.com" isEqualToString:RC_Game_SDK_CloudService])
  192. // {
  193. // cerPath = [[NSBundle mainBundle] pathForResource:@"release" ofType:@"cer"];//证书的路径
  194. // }
  195. //
  196. //
  197. // NSData *certData = [NSData dataWithContentsOfFile:cerPath];
  198. //
  199. // // AFSSLPinningModeCertificate 使用证书验证模式、、、//AFSSLPinningModeNone 不使用SSLPinning //AFSSLPinningModeCertificate 使用SSLPinning
  200. // AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
  201. //
  202. // if ([@"https://test.androidscloud.com" isEqualToString:RC_Game_SDK_CloudService])
  203. // {
  204. // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  205. // }
  206. //
  207. //
  208. // // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
  209. // // 如果是需要验证自建证书,需要设置为YES
  210. // securityPolicy.allowInvalidCertificates = YES;
  211. //
  212. // //validatesDomainName 是否需要验证域名,默认为YES;
  213. // //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
  214. // //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
  215. // //如置为NO,建议自己添加对应域名的校验逻辑。
  216. // securityPolicy.validatesDomainName = NO;
  217. //
  218. // securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:certData, nil];
  219. //
  220. // return securityPolicy;
  221. //}
  222. #pragma mark afnetwork post 请求
  223. - (void)CommonPostCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
  224. {
  225. NSString *curServer = mCloudService;
  226. HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",curServer,code,dict);
  227. NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
  228. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  229. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  230. {// 无网络状态
  231. NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
  232. mainBlock(^{
  233. success(responseObject);
  234. });
  235. return;
  236. }
  237. NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  238. if (curSN) {
  239. [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
  240. }
  241. [manager POST:url parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  242. HLog(@"接口名称:%@ 接口返回:%@,\n ",code,responseObject);
  243. success(responseObject);
  244. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
  245. failure(error);
  246. HLog(@"%@", error);
  247. }];
  248. }
  249. #pragma mark afnetwork get 请求
  250. - (void)CommonGetWithCallBackCode:(NSString *)code Parameters:(NSDictionary *_Nullable)dic success:(netWork_Success)success failure:(netWork_Faild)faildStr
  251. {
  252. NSString *curServer = mCloudService;
  253. NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
  254. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  255. {// 无网络状态
  256. NSDictionary *responseObject = @{@"status" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
  257. success(responseObject);
  258. return;
  259. }
  260. NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  261. if (curSN) {
  262. [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
  263. }
  264. HLog(@"地址:%@%@,\n 参数:%@\n",curServer,code,dic);
  265. [manager GET:url parameters:dic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  266. HLog(@"接口名称:%@,返回:%@,\n ",code,responseObject);
  267. success(responseObject);
  268. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
  269. faildStr(error);
  270. HLog(@"%@", error);
  271. }];
  272. }
  273. - (void)doUploadFileToFileServiceWithParams:(NSMutableDictionary *)params data:(NSData *)data success:(netWork_Success)success faild:(netWork_Faild)faildStr {
  274. AFHTTPSessionManager *uploadManager = [[AFHTTPSessionManager alloc] init];
  275. uploadManager.requestSerializer = [AFJSONRequestSerializer serializer];
  276. uploadManager.responseSerializer = [AFJSONResponseSerializer serializer];
  277. uploadManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/javascript",@"text/html",@"text/plain",nil];
  278. uploadManager.requestSerializer.timeoutInterval = 60;
  279. NSString *urlString = FileService;
  280. [uploadManager.requestSerializer setValue:Const_File_Access_Key forHTTPHeaderField:@"file-access-key"];
  281. [uploadManager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  282. //NSString *mimeType =@"application/octet-stream";
  283. NSString *mimeType =@"application/zip";
  284. //[formData appendPartWithFileData:data name:@"file" fileName:params[@"filename"] mimeType:mimeType];
  285. [formData appendPartWithFileData:data name:@"file" fileName:@"webrtc_ios.zip" mimeType:mimeType];
  286. } progress:^(NSProgress * _Nonnull uploadProgress) {
  287. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  288. success(responseObject);
  289. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
  290. faildStr(error);
  291. }];
  292. }
  293. #pragma mark afnetwork post 埋点请求
  294. //eventType 事件模块类型 0 一级模块=1 二级模块=2 三级模块=3
  295. //事件模块值 Scan_code
  296. - (void)DataEmbeddingPointBy:(int)eventType withEventValue:(NSString*)eventValue
  297. {
  298. //test code
  299. //return;
  300. if(!eventValue){
  301. return;
  302. }
  303. NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  304. if (curSN) {
  305. [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
  306. }
  307. else{
  308. return;
  309. }
  310. NSMutableDictionary *dict = [NSMutableDictionary new];
  311. [dict setValue:[NSNumber numberWithInt:eventType] forKey:@"eventType"];
  312. [dict setValue:eventValue forKey:@"eventValue"];
  313. [self CommonPostCallBackCode:clientAddDataPointFun Parameters:dict success:^(id _Nonnull responseObject) {
  314. //HLog(@"111");
  315. } failure:^(NSError * _Nonnull error) {
  316. }];
  317. }
  318. #pragma mark afnetwork post 请求
  319. - (void)cloudPhonePostCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
  320. {
  321. //NSString *curServer = NASService;
  322. NSString *curServer = ksharedAppDelegate.NASFileByBoxService;
  323. if(!curServer ||curServer.length ==0){
  324. NSDictionary *responseObject = @{@"code" : @(-998), @"msg" : @"ip wrong", @"data" : @""};
  325. mainBlock(^{
  326. success(responseObject);
  327. });
  328. return;
  329. }
  330. NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
  331. HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",url,code,dict);
  332. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  333. if([code isEqualToString:@"delFile"])
  334. {
  335. [manager.requestSerializer setValue:@"multipart/from-data" forHTTPHeaderField:@"Content-Type"];
  336. }
  337. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  338. {// 无网络状态
  339. NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
  340. mainBlock(^{
  341. success(responseObject);
  342. });
  343. return;
  344. }
  345. NSMutableURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST"
  346. URLString:url
  347. parameters:nil
  348. constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  349. for (NSString *key in [dict allKeys])
  350. {
  351. NSArray *arr = dict[key];
  352. NSString *str1 = @"[";
  353. NSString *str2 = @"]";
  354. NSMutableString *dataStr = [NSMutableString new];
  355. for (NSString *curStr in arr) {
  356. if(dataStr.length != 0){
  357. [dataStr appendString:@","];
  358. }
  359. [dataStr appendString:@"\""];
  360. [dataStr appendString:curStr];
  361. [dataStr appendString:@"\""];
  362. }
  363. NSMutableString *totalStr = [NSMutableString new];
  364. [totalStr appendString:str1];
  365. [totalStr appendString:dataStr];
  366. [totalStr appendString:str2];
  367. HLog(@"%@",totalStr);
  368. [formData appendPartWithFormData:[totalStr dataUsingEncoding:NSUTF8StringEncoding] name:key];
  369. }
  370. } error:nil];
  371. NSURLSessionDataTask *task = [manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
  372. if (error) {
  373. HLog(@"%@", error);
  374. failure(error);
  375. return;
  376. }
  377. success(responseObject);
  378. }];
  379. [task resume];
  380. }
  381. - (void)cloudPhoneGETCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
  382. {
  383. //NSString *curServer = NASService;
  384. NSString *curServer = ksharedAppDelegate.NASFileByBoxService;
  385. if(!curServer ||curServer.length ==0){
  386. NSDictionary *responseObject = @{@"code" : @(-998), @"msg" : @"ip wrong", @"data" : @""};
  387. mainBlock(^{
  388. success(responseObject);
  389. });
  390. return;
  391. }
  392. NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
  393. HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",url,code,dict);
  394. //managerNAS manager
  395. [managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  396. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  397. {// 无网络状态
  398. NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
  399. mainBlock(^{
  400. success(responseObject);
  401. });
  402. return;
  403. }
  404. //managerNAS manager
  405. [manager GET:url parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  406. HLog(@"接口名称:%@ 接口返回:%@,\n ",code,responseObject);
  407. success(responseObject);
  408. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
  409. failure(error);
  410. HLog(@"%@", error);
  411. }];
  412. }
  413. #pragma mark afnetwork get 请求 检测文件是否存在
  414. - (void)cloudPhoneCheckUrlCallBackCode:(NSString*)code success:(netWork_Success)success failure:(netWork_Faild)failure
  415. {
  416. NSString *curServer = code;
  417. NSString *url = [NSString stringWithFormat:@"%@",curServer];
  418. HLog(@"地址:%@",url);
  419. //managerNAS manager
  420. //[managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  421. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  422. {// 无网络状态
  423. NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
  424. mainBlock(^{
  425. success(responseObject);
  426. });
  427. return;
  428. }
  429. NSString *fullUrl = nil;
  430. NSString *paraStr = nil;
  431. NSArray *urlArr = [url componentsSeparatedByString:@"?"];
  432. if(urlArr.count == 2){
  433. fullUrl = urlArr.firstObject;
  434. paraStr = urlArr.lastObject;
  435. paraStr = [paraStr stringByReplacingOccurrencesOfString:@"path=" withString:@""];
  436. NSString *string = paraStr;
  437. NSString *filePathBase64 = [iTools base64UrlEncoder:string];
  438. fullUrl = [[NSString alloc] initWithFormat:@"%@/%@",fullUrl,filePathBase64];
  439. }else{
  440. return;
  441. }
  442. if(!fullUrl){
  443. return;
  444. }
  445. if([fullUrl containsString:@"getFile"]
  446. &&![fullUrl containsString:@"getFiles"]){
  447. fullUrl = [fullUrl stringByReplacingOccurrencesOfString:@"getFile" withString:@"getFiles"];
  448. }
  449. HLog(@"%@",fullUrl);
  450. //1.创建管理者对象
  451. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  452. //2.确定请求的URL地址
  453. NSURL *url2222 = [NSURL URLWithString:fullUrl];
  454. //3.创建请求对象
  455. NSURLRequest *request = [NSURLRequest requestWithURL:url2222];
  456. //4.下载任务
  457. __block SuperModel *model = [SuperModel new];
  458. __block NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
  459. //打印下下载进度
  460. HLog(@"%@",downloadProgress);
  461. [task cancel];
  462. } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
  463. //设置文件保存路径
  464. return [NSURL fileURLWithPath:@""];
  465. } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
  466. //HLog(@"完成cache:%@",filePath);
  467. NSHTTPURLResponse *response1 = (NSHTTPURLResponse *)response;
  468. NSInteger statusCode = [response1 statusCode];
  469. HLog(@"statusCode:%ld",statusCode);
  470. if (statusCode == 200) {
  471. model.code = 0;
  472. success(model);
  473. }else{
  474. model.code = -1;
  475. success(model);
  476. }
  477. }];
  478. //5.开始启动下载任务
  479. [task resume];
  480. //[task cancel];
  481. }
  482. #pragma mark afnetwork get 请求 音乐播放器下载音频缓存
  483. - (void)cloudPhoneDownloadAudioByCode:(NSString*)code withSavePath:(NSString*)savePath success:(netWork_Success)success failure:(netWork_Faild)failure
  484. {
  485. NSString *curServer = code;
  486. NSString *fullUrl = curServer;
  487. HLog(@"地址:%@",fullUrl);
  488. //managerNAS manager
  489. //[managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  490. __block SuperModel *model = [SuperModel new];
  491. if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  492. {// 无网络状态
  493. model.code = -1;
  494. success(model);
  495. return;
  496. }
  497. if(!fullUrl){
  498. model.code = -1;
  499. success(model);
  500. return;
  501. }
  502. if([fullUrl containsString:@"getFile"]
  503. &&![fullUrl containsString:@"getFiles"]){
  504. fullUrl = [fullUrl stringByReplacingOccurrencesOfString:@"getFile" withString:@"getFiles"];
  505. }
  506. HLog(@"%@",fullUrl);
  507. //1.创建管理者对象
  508. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  509. //2.确定请求的URL地址
  510. NSURL *url2222 = [NSURL URLWithString:fullUrl];
  511. //3.创建请求对象
  512. NSURLRequest *request = [NSURLRequest requestWithURL:url2222];
  513. //4.下载任务
  514. __block NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
  515. //打印下下载进度
  516. HLog(@"%@",downloadProgress);
  517. } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
  518. //设置文件保存路径
  519. return [NSURL fileURLWithPath:savePath];
  520. } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
  521. //HLog(@"完成cache:%@",filePath);
  522. NSHTTPURLResponse *response1 = (NSHTTPURLResponse *)response;
  523. NSInteger statusCode = [response1 statusCode];
  524. HLog(@"statusCode:%ld",statusCode);
  525. if (statusCode == 200) {
  526. model.code = 0;
  527. success(model);
  528. }else{
  529. model.code = -1;
  530. success(model);
  531. }
  532. }];
  533. //5.开始启动下载任务
  534. [task resume];
  535. }
  536. #pragma mark 根据SN 获取设备信息
  537. - (void)getThridMsgBySN:(NSString*)snStr success:(netWork_Success)success failure:(netWork_Faild)failure;
  538. {
  539. NSMutableDictionary *paraDict = [NSMutableDictionary new];
  540. [paraDict setValue:snStr forKey:@"sn"];
  541. KWeakSelf
  542. [[netWorkManager shareInstance] CommonGetWithCallBackCode:getThirdIdBySn Parameters:paraDict success:^(id _Nonnull responseObject) {
  543. DeviceThirdIdModel *model = [[DeviceThirdIdModel alloc] initWithDictionary:responseObject error:nil];
  544. if(model.status == 0
  545. && model.data)
  546. {//根据SN 获取到正确的信息
  547. ksharedAppDelegate.DeviceThirdIdMod = model;
  548. NSString*desPwdstr = [RSATool AES128Decrypt:model.data.password key:AESCODEKEEYY];
  549. /*密码保持在本地*/
  550. NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device];
  551. NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:deviceDict];
  552. [dict setObject:desPwdstr forKey:Const_Have_Add_Device_PWD];
  553. NSString *sdnid = model.data.sdnId;
  554. if(sdnid){
  555. [dict setObject:sdnid forKey:Const_Have_Add_Device_sdnid];
  556. }
  557. [HWDataManager setObjectWithKey:Const_Have_Add_Device_Privacy_Mode value:[NSNumber numberWithBool:model.data.isPrivacyMode]];
  558. [HWDataManager setObjectWithKey:Const_Have_Add_Device value:dict];
  559. }
  560. else{
  561. }
  562. success(model);
  563. } failure:^(NSError * _Nonnull error) {
  564. HLog("网络报错");
  565. failure(error);
  566. }];
  567. }
  568. -(void)RefreshThridMsg
  569. {
  570. NSString *sn = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  571. if(sn && sn.length>0){
  572. [self getThridMsgBySN:sn success:^(id _Nonnull responseObject) {
  573. } failure:^(NSError * _Nonnull error) {
  574. }];
  575. }
  576. }
  577. #pragma mark 修改隐私模式密码
  578. -(void)updateCardInfoBySN:(NSString*)snStr withPwdStr:(NSString*)pwd didNetEnd:(netWork_DidEndByOK)didNetEndIsOK
  579. {
  580. NSMutableDictionary *paraDict = [NSMutableDictionary new];
  581. [paraDict setValue:snStr forKey:@"sn"];
  582. NSString* enPwdStr = [RSATool AES128Encrypt:pwd key:AESCODEKEEYY];
  583. if(enPwdStr){
  584. [paraDict setValue:enPwdStr forKey:@"password"];
  585. }
  586. //KWeakSelf
  587. [[netWorkManager shareInstance] CommonPostCallBackCode:updateCardInfo Parameters:paraDict success:^(id _Nonnull responseObject) {
  588. SuperModel*model = [[SuperModel alloc] initWithDictionary:responseObject error:nil];
  589. if(model && model.status == 0)
  590. {
  591. didNetEndIsOK(YES);
  592. ksharedAppDelegate.DeviceThirdIdMod.data.password = enPwdStr;
  593. /*密码保持在本地*/
  594. NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device];
  595. NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:deviceDict];
  596. [dict setObject:pwd forKey:Const_Have_Add_Device_PWD];
  597. [HWDataManager setObjectWithKey:Const_Have_Add_Device value:dict];
  598. }
  599. else{
  600. didNetEndIsOK(NO);
  601. }
  602. } failure:^(NSError * _Nonnull error) {
  603. HLog("网络报错");
  604. didNetEndIsOK(NO);
  605. }];
  606. }
  607. @end