123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779 |
- //
- // netWorkManager.m
- // 隐私保护
- //
- // Created by xd h on 2023/10/8.
- //
- #import "netWorkManager.h"
- #import "AFNetworkReachabilityManager.h"
- #import "AFHTTPSessionManager.h"
- #import "RcGameWQKeyChain.h"
- #import "iPhone.h"
- @interface netWorkManager ()
- {
- AFHTTPSessionManager *manager;
- NSString *mCloudService;
- //NSString *mRequstAPI;
- AFHTTPSessionManager *managerNAS;
- }
- @end
- @implementation netWorkManager
- static netWorkManager *Game_NetWorkShareInstance = nil;
- +(netWorkManager *)shareInstance;
- {
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- Game_NetWorkShareInstance = [[netWorkManager alloc]init];
-
- });
-
- return Game_NetWorkShareInstance;
- }
- - (id)init
- {
- self = [super init];
-
- if (self) {
- [self initManager];
- }
-
- return self;
- }
- - (void)initManager
- {
- mCloudService = CloudService;
-
-
- if ([mCloudService rangeOfString:@"https"].location != NSNotFound)
- {
- manager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:mCloudService]];
- }
- else
- {
- manager = [AFHTTPSessionManager manager];
- }
-
-
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- manager.responseSerializer = [AFJSONResponseSerializer serializer];
- [manager.requestSerializer setHTTPShouldHandleCookies:NO];
- [manager.requestSerializer setHTTPShouldUsePipelining:NO];
- 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];
-
- manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];
-
- //设置当前语言
- NSString * preferredLanguage = @"zh";
- //NSArray *arLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
- //NSLog(@"arLanguages:%@",arLanguages);
- ///获取设备当前地区的代码和APP语言环境
- NSString *languageCode = [NSLocale preferredLanguages][0];
-
- //目前支持 中文(简体 繁体) 英文 日语
- if([languageCode rangeOfString:@"zh-Hans"].location != NSNotFound)
- {
- preferredLanguage = @"zh";
- }
- else if([languageCode rangeOfString:@"zh-Hant"].location != NSNotFound)
- {
- preferredLanguage = @"zh-TW";
- }
- else if([languageCode rangeOfString:@"ja-"].location != NSNotFound)
- {
- preferredLanguage = @"ja";
- }
- else{
- preferredLanguage = @"en";
- }
-
- [manager.requestSerializer setValue:preferredLanguage forHTTPHeaderField:@"Accept-Language"];
-
- // 请求头里添加版本号
- //[manager.requestSerializer setValue:@"1.0" forHTTPHeaderField:@"rc-sdk"];
- //[manager.requestSerializer setValue:@"1" forHTTPHeaderField:@"rc-platform"]; //iOS 1 安卓0
-
- // NSString *version = [NSString stringWithFormat:@"v%@", [IPhoneInfoAndToolsManager appVersion]];
- // NSString *uuid = [IPhoneInfoAndToolsManager phoneDeviceUuid];
- // [manager.requestSerializer setValue:version forHTTPHeaderField:@"versionName"];
- // [manager.requestSerializer setValue:uuid forHTTPHeaderField:@"devicesId"];
- [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"Source-Type"];
-
- NSString *DeviceModel = [iTools getCurrentDeviceModel];
- if(DeviceModel){
- [manager.requestSerializer setValue:DeviceModel forHTTPHeaderField:@"Devices"];
- }
-
- // NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
- // if (curSN) {
- // [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
- // }
-
- NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
- if(curOaidStr){
- [manager.requestSerializer setValue:curOaidStr forHTTPHeaderField:@"OAID"];
- }
-
- NSString *vers = [iPhone appVersion];
- if(vers){
- [manager.requestSerializer setValue:vers forHTTPHeaderField:@"versionName"];
- }
-
- if ([mCloudService rangeOfString:@"https"].location != NSNotFound)
- {
- [manager setSecurityPolicy:[self customSecurityPolicy]];
- }
-
- // 客户端是否信任非法证书
- // manager.securityPolicy.allowInvalidCertificates = YES;
- // // 是否在证书域字段中验证域名
- // [manager.securityPolicy setValidatesDomainName:NO];
-
- manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- // manager.securityPolicy.allowInvalidCertificates = YES; //还是必须设成YES
-
- // 设置超时时间(设置有效)
- //[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
- manager.requestSerializer.timeoutInterval = 180;
- //[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
-
- }
- - (void)setAFHTTPSessionManagerFunBy:(NSInteger)tcpPort
- {
- NSString *ip = @"127.0.0.1";
- NSNumber *proxyPort = [NSNumber numberWithInteger:tcpPort];
- NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
- config.connectionProxyDictionary = @
- {
- @"HTTPEnable":@YES,
- @"HTTPProxy" : ip,
- @"HTTPPort" : proxyPort,
- @"HTTPSEnable":@YES,
- @"HTTPSProxy": ip,
- @"HTTPSPort": proxyPort
- };
- managerNAS = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:config];
-
- managerNAS.requestSerializer = [AFJSONRequestSerializer serializer];
- managerNAS.responseSerializer = [AFJSONResponseSerializer serializer];
- [managerNAS.requestSerializer setHTTPShouldHandleCookies:NO];
- [managerNAS.requestSerializer setHTTPShouldUsePipelining:NO];
- 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];
-
- managerNAS.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];
-
- //if ([NASService rangeOfString:@"https"].location != NSNotFound)
- if ([ksharedAppDelegate.NASFileByBoxService rangeOfString:@"https"].location != NSNotFound)
- {
- [managerNAS setSecurityPolicy:[self customSecurityPolicy]];
- }
- }
- #pragma - mark 证书相关
- - (AFSecurityPolicy*)customSecurityPolicy
- {
- // // /先导入证书
- // NSString *cerName = @"newrelease";
- // if ([@"https://client.phone.androidscloud.com" isEqualToString:CloudService])
- // {
- // cerName = @"newrelease";
- // }
- // else if ([@"https://prese.phone.androidscloud.com" isEqualToString:CloudService])
- // {
- // cerName = @"newrelease";
- // }
- // NSString *cerPath = [[NSBundle mainBundle] pathForResource:cerName ofType:@"cer"];//证书的路径
- // NSData *certData = [NSData dataWithContentsOfFile:cerPath];
-
- // AFSSLPinningModeCertificate 使用证书验证模式、、、//AFSSLPinningModeNone 不使用SSLPinning //AFSSLPinningModeCertificate 使用SSLPinning
- AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
-
- // if ([@"https://test.androidscloud.com" isEqualToString:CloudService])
- // {
- // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- // }
- // else if ([@"https://pre.androidscloud.com" isEqualToString:CloudService])
- // {
- // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- // }
- // else if ([@"https://a.androidscloud.com" isEqualToString:CloudService])
- // {
- // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- // }
-
- // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
- // 如果是需要验证自建证书,需要设置为YES
- securityPolicy.allowInvalidCertificates = NO;
- //validatesDomainName 是否需要验证域名,默认为YES;
- //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
- //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
- //如置为NO,建议自己添加对应域名的校验逻辑。
- securityPolicy.validatesDomainName = YES;
-
- // securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:certData, nil];
-
- return securityPolicy;
- }
- #pragma - mark 证书相关
- //- (AFSecurityPolicy*)customSecurityPolicy
- //{
- // // /先导入证书
- // NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"ca" ofType:@"cer"];//证书的路径
- //
- // if ([@"https://client.androidscloud.com" isEqualToString:RC_Game_SDK_CloudService])
- // {
- // cerPath = [[NSBundle mainBundle] pathForResource:@"release" ofType:@"cer"];//证书的路径
- // }
- //
- //
- // NSData *certData = [NSData dataWithContentsOfFile:cerPath];
- //
- // // AFSSLPinningModeCertificate 使用证书验证模式、、、//AFSSLPinningModeNone 不使用SSLPinning //AFSSLPinningModeCertificate 使用SSLPinning
- // AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
- //
- // if ([@"https://test.androidscloud.com" isEqualToString:RC_Game_SDK_CloudService])
- // {
- // securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- // }
- //
- //
- // // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
- // // 如果是需要验证自建证书,需要设置为YES
- // securityPolicy.allowInvalidCertificates = YES;
- //
- // //validatesDomainName 是否需要验证域名,默认为YES;
- // //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
- // //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
- // //如置为NO,建议自己添加对应域名的校验逻辑。
- // securityPolicy.validatesDomainName = NO;
- //
- // securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:certData, nil];
- //
- // return securityPolicy;
- //}
- #pragma mark afnetwork post 请求
- - (void)CommonPostCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
- {
-
- NSString *curServer = mCloudService;
-
- HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",curServer,code,dict);
-
- NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
-
- [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
-
- NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
- if (curSN) {
- [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
- }
-
- [manager POST:url parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
-
- HLog(@"接口名称:%@ 接口返回:%@,\n ",code,responseObject);
-
- success(responseObject);
-
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
-
- failure(error);
- HLog(@"%@", error);
- }];
- }
- #pragma mark afnetwork get 请求
- - (void)CommonGetWithCallBackCode:(NSString *)code Parameters:(NSDictionary *_Nullable)dic success:(netWork_Success)success failure:(netWork_Faild)faildStr
- {
-
- NSString *curServer = mCloudService;
- NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- NSDictionary *responseObject = @{@"status" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
- success(responseObject);
- return;
- }
-
- NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
- if (curSN) {
- [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
- }
-
- HLog(@"地址:%@%@,\n 参数:%@\n",curServer,code,dic);
-
- [manager GET:url parameters:dic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
-
-
- HLog(@"接口名称:%@,返回:%@,\n ",code,responseObject);
- success(responseObject);
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
-
- faildStr(error);
- HLog(@"%@", error);
- }];
- }
- - (void)doUploadFileToFileServiceWithParams:(NSMutableDictionary *)params data:(NSData *)data success:(netWork_Success)success faild:(netWork_Faild)faildStr {
-
- AFHTTPSessionManager *uploadManager = [[AFHTTPSessionManager alloc] init];
- uploadManager.requestSerializer = [AFJSONRequestSerializer serializer];
- uploadManager.responseSerializer = [AFJSONResponseSerializer serializer];
- uploadManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/javascript",@"text/html",@"text/plain",nil];
- uploadManager.requestSerializer.timeoutInterval = 60;
-
-
- NSString *urlString = FileService;
- [uploadManager.requestSerializer setValue:Const_File_Access_Key forHTTPHeaderField:@"file-access-key"];
- [uploadManager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
-
- //NSString *mimeType =@"application/octet-stream";
- NSString *mimeType =@"application/zip";
- //[formData appendPartWithFileData:data name:@"file" fileName:params[@"filename"] mimeType:mimeType];
- [formData appendPartWithFileData:data name:@"file" fileName:@"webrtc_ios.zip" mimeType:mimeType];
-
- } progress:^(NSProgress * _Nonnull uploadProgress) {
-
- } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
-
- success(responseObject);
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
-
- faildStr(error);
- }];
- }
- #pragma mark afnetwork post 埋点请求
- //eventType 事件模块类型 0 一级模块=1 二级模块=2 三级模块=3
- //事件模块值 Scan_code
- - (void)DataEmbeddingPointBy:(int)eventType withEventValue:(NSString*)eventValue
- {
- //test code
- //return;
-
- if(!eventValue){
- return;
- }
-
- NSString *curSN = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
- if (curSN) {
- [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
- }
- else{
- return;
- }
-
- NSMutableDictionary *dict = [NSMutableDictionary new];
- [dict setValue:[NSNumber numberWithInt:eventType] forKey:@"eventType"];
- [dict setValue:eventValue forKey:@"eventValue"];
-
- [self CommonPostCallBackCode:clientAddDataPointFun Parameters:dict success:^(id _Nonnull responseObject) {
- //HLog(@"111");
- } failure:^(NSError * _Nonnull error) {
-
- }];
- }
- #pragma mark afnetwork post 请求
- - (void)cloudPhonePostCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
- {
-
- //NSString *curServer = NASService;
- NSString *curServer = ksharedAppDelegate.NASFileByBoxService;
- if(!curServer ||curServer.length ==0){
- NSDictionary *responseObject = @{@"code" : @(-998), @"msg" : @"ip wrong", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
- NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
- HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",url,code,dict);
-
- [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- if([code isEqualToString:@"delFile"])
- {
- [manager.requestSerializer setValue:@"multipart/from-data" forHTTPHeaderField:@"Content-Type"];
- }
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
-
- NSMutableURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST"
- URLString:url
- parameters:nil
- constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
- for (NSString *key in [dict allKeys])
- {
- NSArray *arr = dict[key];
- NSString *str1 = @"[";
- NSString *str2 = @"]";
-
- NSMutableString *dataStr = [NSMutableString new];
-
- for (NSString *curStr in arr) {
-
- if(dataStr.length != 0){
- [dataStr appendString:@","];
- }
-
- [dataStr appendString:@"\""];
- [dataStr appendString:curStr];
- [dataStr appendString:@"\""];
- }
-
- NSMutableString *totalStr = [NSMutableString new];
- [totalStr appendString:str1];
- [totalStr appendString:dataStr];
- [totalStr appendString:str2];
-
- HLog(@"%@",totalStr);
- [formData appendPartWithFormData:[totalStr dataUsingEncoding:NSUTF8StringEncoding] name:key];
- }
- } error:nil];
-
- NSURLSessionDataTask *task = [manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
-
- if (error) {
- HLog(@"%@", error);
- failure(error);
- return;
- }
-
- success(responseObject);
- }];
-
- [task resume];
-
- }
- - (void)cloudPhoneGETCallBackCode:(NSString*)code Parameters:(NSDictionary*)dict success:(netWork_Success)success failure:(netWork_Faild)failure
- {
-
- //NSString *curServer = NASService;
- NSString *curServer = ksharedAppDelegate.NASFileByBoxService;
- if(!curServer ||curServer.length ==0){
- NSDictionary *responseObject = @{@"code" : @(-998), @"msg" : @"ip wrong", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
- NSString *url = [NSString stringWithFormat:@"%@%@",curServer,code];
- HLog(@"地址:%@ \n接口名称:%@,\n 参数:%@\n",url,code,dict);
-
- //managerNAS manager
- [managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
- //managerNAS manager
- [manager GET:url parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
-
- HLog(@"接口名称:%@ 接口返回:%@,\n ",code,responseObject);
-
- success(responseObject);
-
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id _Nonnull responseObject) {
-
- failure(error);
- HLog(@"%@", error);
- }];
- }
- #pragma mark afnetwork get 请求 检测文件是否存在
- - (void)cloudPhoneCheckUrlCallBackCode:(NSString*)code success:(netWork_Success)success failure:(netWork_Faild)failure
- {
-
- NSString *curServer = code;
- NSString *url = [NSString stringWithFormat:@"%@",curServer];
- HLog(@"地址:%@",url);
-
- //managerNAS manager
- //[managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- NSDictionary *responseObject = @{@"code" : @(-999), @"msg" : @"当前网络不可用", @"data" : @""};
- mainBlock(^{
- success(responseObject);
- });
- return;
- }
-
- NSString *fullUrl = nil;
- NSString *paraStr = nil;
- NSArray *urlArr = [url componentsSeparatedByString:@"?"];
- if(urlArr.count == 2){
- fullUrl = urlArr.firstObject;
- paraStr = urlArr.lastObject;
- paraStr = [paraStr stringByReplacingOccurrencesOfString:@"path=" withString:@""];
-
- NSString *string = paraStr;
- NSString *filePathBase64 = [iTools base64UrlEncoder:string];
- fullUrl = [[NSString alloc] initWithFormat:@"%@/%@",fullUrl,filePathBase64];
- }else{
- return;
- }
-
- if(!fullUrl){
- return;
- }
-
- if([fullUrl containsString:@"getFile"]
- &&![fullUrl containsString:@"getFiles"]){
- fullUrl = [fullUrl stringByReplacingOccurrencesOfString:@"getFile" withString:@"getFiles"];
- }
- HLog(@"%@",fullUrl);
-
- //1.创建管理者对象
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- //2.确定请求的URL地址
- NSURL *url2222 = [NSURL URLWithString:fullUrl];
- //3.创建请求对象
- NSURLRequest *request = [NSURLRequest requestWithURL:url2222];
- //4.下载任务
-
- __block SuperModel *model = [SuperModel new];
- __block NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
- //打印下下载进度
- HLog(@"%@",downloadProgress);
- [task cancel];
-
- } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
- //设置文件保存路径
- return [NSURL fileURLWithPath:@""];
- } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
- //HLog(@"完成cache:%@",filePath);
- NSHTTPURLResponse *response1 = (NSHTTPURLResponse *)response;
- NSInteger statusCode = [response1 statusCode];
- HLog(@"statusCode:%ld",statusCode);
- if (statusCode == 200) {
- model.code = 0;
- success(model);
- }else{
- model.code = -1;
- success(model);
- }
- }];
- //5.开始启动下载任务
- [task resume];
- //[task cancel];
-
- }
- #pragma mark afnetwork get 请求 音乐播放器下载音频缓存
- - (void)cloudPhoneDownloadAudioByCode:(NSString*)code withSavePath:(NSString*)savePath success:(netWork_Success)success failure:(netWork_Faild)failure
- {
-
- NSString *curServer = code;
- NSString *fullUrl = curServer;
- HLog(@"地址:%@",fullUrl);
-
- //managerNAS manager
- //[managerNAS.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-
- __block SuperModel *model = [SuperModel new];
-
- if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {// 无网络状态
- model.code = -1;
- success(model);
- return;
- }
-
- if(!fullUrl){
- model.code = -1;
- success(model);
- return;
- }
-
- if([fullUrl containsString:@"getFile"]
- &&![fullUrl containsString:@"getFiles"]){
- fullUrl = [fullUrl stringByReplacingOccurrencesOfString:@"getFile" withString:@"getFiles"];
- }
- HLog(@"%@",fullUrl);
-
- //1.创建管理者对象
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- //2.确定请求的URL地址
- NSURL *url2222 = [NSURL URLWithString:fullUrl];
- //3.创建请求对象
- NSURLRequest *request = [NSURLRequest requestWithURL:url2222];
- //4.下载任务
-
-
- __block NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
- //打印下下载进度
- HLog(@"%@",downloadProgress);
-
- } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
- //设置文件保存路径
- return [NSURL fileURLWithPath:savePath];
- } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
- //HLog(@"完成cache:%@",filePath);
- NSHTTPURLResponse *response1 = (NSHTTPURLResponse *)response;
- NSInteger statusCode = [response1 statusCode];
- HLog(@"statusCode:%ld",statusCode);
- if (statusCode == 200) {
- model.code = 0;
- success(model);
- }else{
- model.code = -1;
- success(model);
- }
- }];
- //5.开始启动下载任务
- [task resume];
- }
- #pragma mark 根据SN 获取设备信息
- - (void)getThridMsgBySN:(NSString*)snStr success:(netWork_Success)success failure:(netWork_Faild)failure;
- {
- NSMutableDictionary *paraDict = [NSMutableDictionary new];
- [paraDict setValue:snStr forKey:@"sn"];
- KWeakSelf
- [[netWorkManager shareInstance] CommonGetWithCallBackCode:getThirdIdBySn Parameters:paraDict success:^(id _Nonnull responseObject) {
-
- DeviceThirdIdModel *model = [[DeviceThirdIdModel alloc] initWithDictionary:responseObject error:nil];
- if(model.status == 0
- && model.data)
- {//根据SN 获取到正确的信息
- ksharedAppDelegate.DeviceThirdIdMod = model;
-
- NSString*desPwdstr = [RSATool AES128Decrypt:model.data.password key:AESCODEKEEYY];
-
- /*密码保持在本地*/
- NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device];
- NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:deviceDict];
- [dict setObject:desPwdstr forKey:Const_Have_Add_Device_PWD];
-
- NSString *sdnid = model.data.sdnId;
-
- if(sdnid){
- [dict setObject:sdnid forKey:Const_Have_Add_Device_sdnid];
- }
-
- [HWDataManager setObjectWithKey:Const_Have_Add_Device_Privacy_Mode value:[NSNumber numberWithBool:model.data.isPrivacyMode]];
-
- [HWDataManager setObjectWithKey:Const_Have_Add_Device value:dict];
- }
- else{
-
- }
-
- success(model);
-
- } failure:^(NSError * _Nonnull error) {
- HLog("网络报错");
- failure(error);
- }];
- }
- -(void)RefreshThridMsg
- {
- NSString *sn = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
- if(sn && sn.length>0){
- [self getThridMsgBySN:sn success:^(id _Nonnull responseObject) {
-
- } failure:^(NSError * _Nonnull error) {
-
- }];
- }
- }
- #pragma mark 修改隐私模式密码
- -(void)updateCardInfoBySN:(NSString*)snStr withPwdStr:(NSString*)pwd didNetEnd:(netWork_DidEndByOK)didNetEndIsOK
- {
-
- NSMutableDictionary *paraDict = [NSMutableDictionary new];
- [paraDict setValue:snStr forKey:@"sn"];
-
- NSString* enPwdStr = [RSATool AES128Encrypt:pwd key:AESCODEKEEYY];
- if(enPwdStr){
- [paraDict setValue:enPwdStr forKey:@"password"];
- }
-
- //KWeakSelf
- [[netWorkManager shareInstance] CommonPostCallBackCode:updateCardInfo Parameters:paraDict success:^(id _Nonnull responseObject) {
-
-
- SuperModel*model = [[SuperModel alloc] initWithDictionary:responseObject error:nil];
- if(model && model.status == 0)
- {
- didNetEndIsOK(YES);
-
- ksharedAppDelegate.DeviceThirdIdMod.data.password = enPwdStr;
- /*密码保持在本地*/
- NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device];
- NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:deviceDict];
- [dict setObject:pwd forKey:Const_Have_Add_Device_PWD];
- [HWDataManager setObjectWithKey:Const_Have_Add_Device value:dict];
-
- }
- else{
- didNetEndIsOK(NO);
- }
-
-
- } failure:^(NSError * _Nonnull error) {
- HLog("网络报错");
- didNetEndIsOK(NO);
- }];
- }
- @end
|