// // NetManager.m // IfihYooeeDemo // // Created by imac on 16/5/27. // Copyright © 2016年 xiang. All rights reserved. // #import "NetManager.h" #import "Constants.h" #import "Utils.h" #import "LoginResult.h" #import "AccountResult.h" #import "ModifyLoginPasswordResult.h" #import "RegisterResult.h" #import "CheckNewMessageResult.h" #import "GetContactMessageResult.h" #import "CheckAlarmMessageResult.h" #import "GetAlarmRecordResult.h" #import "Alarm.h" #import "AppDelegate.h" #import "AFNetworking.h" static NSString *server1 = @"http://api1.cloudlinks.cn/"; static NSString *server2 = @"http://api2.cloudlinks.cn/"; static NSString *server3 = @"http://api3.cloud-links.net/"; static NSString *server4 = @"http://api4.cloud-links.net/"; //static NSString *server = @"http://www.gwelltimes.com/"; static NSString *currentServer; static NSMutableArray *servers; static NSInteger reconnectCount; #define ContentType @"text/plain" @implementation NetManager - (id)init { if (self = [super init]) { } return self; } +(NetManager*)sharedManager{ static NetManager *manager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager = [[NetManager alloc] init]; reconnectCount = 0; servers = [[NSMutableArray alloc] initWithCapacity:0]; [manager randomServer]; }); return manager; } -(void)randomServer{ [servers removeAllObjects]; NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; if([language hasPrefix:@"zh"]){ int random = arc4random()%2; if(random==0){ [servers addObject:[NSString stringWithFormat:@"%@",server1]]; [servers addObject:[NSString stringWithFormat:@"%@",server2]]; }else{ [servers addObject:[NSString stringWithFormat:@"%@",server2]]; [servers addObject:[NSString stringWithFormat:@"%@",server1]]; } random = arc4random()%2; if(random==0){ [servers addObject:[NSString stringWithFormat:@"%@",server3]]; [servers addObject:[NSString stringWithFormat:@"%@",server4]]; }else{ [servers addObject:[NSString stringWithFormat:@"%@",server4]]; [servers addObject:[NSString stringWithFormat:@"%@",server3]]; } }else{ int random = arc4random()%2; if(random==0){ [servers addObject:[NSString stringWithFormat:@"%@",server3]]; [servers addObject:[NSString stringWithFormat:@"%@",server4]]; }else{ [servers addObject:[NSString stringWithFormat:@"%@",server4]]; [servers addObject:[NSString stringWithFormat:@"%@",server3]]; } random = arc4random()%2; if(random==0){ [servers addObject:[NSString stringWithFormat:@"%@",server1]]; [servers addObject:[NSString stringWithFormat:@"%@",server2]]; }else{ [servers addObject:[NSString stringWithFormat:@"%@",server2]]; [servers addObject:[NSString stringWithFormat:@"%@",server1]]; } } currentServer = [[NSString alloc] initWithFormat:@"%@",[servers objectAtIndex:0]]; //currentServer = server; } -(void)resetServer{ [self randomServer]; reconnectCount = 0; } //-(void)onSessionIdError{ // // [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_ON_SESSION_ERROR object:nil]; // //} -(void)requestHttp:(NSString*)baseUrlStr actionPath:(NSString*)path parameter:(NSMutableDictionary*)parameter success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure{ NSLog(@"老版本AF方法已弃用"); } //最新AF方法 -(void)requestHttp:(NSString *)url params:(NSMutableDictionary*)params success:(void (^)(id response))success failure:(void (^)(NSError *err))failure { NSURL* baseURL = [NSURL URLWithString:currentServer]; //获得请求管理者 AFHTTPRequestOperationManager*manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:ContentType]; manager.requestSerializer.HTTPShouldHandleCookies = YES; //[manager.requestSerializer requestWithMethod:@"POST" URLString:url parameters:params error:nil]; NSString *url1=[NSString stringWithFormat:@"%@%@",currentServer,url]; [params setObject:@"2" forKey:@"AppOS"]; [params setObject:@" " forKey:@"VersionFlag"]; NSArray *array = [[AppDelegate getAppVersion] componentsSeparatedByString:@"."]; int a = [[array objectAtIndex:0] intValue]<<24; int b = [[array objectAtIndex:1] intValue]<<16; int c = [[array objectAtIndex:2] intValue]<<8; int d = [[array objectAtIndex:3] intValue]; [params setObject:[NSString stringWithFormat:@"%i",a|b|c|d] forKey:@"AppVersion"]; [manager POST:url1 parameters:params success:^(AFHTTPRequestOperation* operation, NSDictionary* responseObj) { if (success) { NSLog(@"%@",responseObj[@"error"]); NSLog(@"responseObj%@",responseObj); success(responseObj); } } failure:^(AFHTTPRequestOperation* operation, NSError* error) { if (failure){ failure(error); } }]; } //登陆 新 #pragma mark -爱鱼奇用户登陆摄像头新接口、 - (void)loginWithUserName:(NSString*)username password:(NSString*)password token:(NSString*)token callBack:(void (^)(id result))callBack { if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; if([username isValidateNumber]){ NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"User"]; }else{ [parameter setObject:username forKey:@"User"]; } [parameter setObject:[password getMd5_32Bit_String] forKey:@"Pwd"]; if(token){ [parameter setObject:token forKey:@"Token"]; } [self requestHttp:@"Users/LoginCheck.ashx" params:parameter success:^(id response) { // NSDictionary *result =[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil]; NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:response]; //NSDictionary *result =response; NSLog(@"successresponse%@",response); NSLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self loginWithUserName:username password:password token:token callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; LoginResult *loginResult = [[LoginResult alloc] init]; loginResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(loginResult); [loginResult release]; } }else{ LoginResult *loginResult = [[LoginResult alloc] init]; loginResult.error_code = error_code; if(loginResult.error_code == NET_RET_LOGIN_SUCCESS){ int iContactId = ((NSString*)[result valueForKey:@"UserID"]).intValue & 0x7fffffff; loginResult.contactId = [NSString stringWithFormat:@"0%i",iContactId]; loginResult.rCode1 = [result valueForKey:@"P2PVerifyCode1"]; loginResult.rCode2 = [result valueForKey:@"P2PVerifyCode2"]; loginResult.phone = [result valueForKey:@"PhoneNO"]; loginResult.email = [result valueForKey:@"Email"]; loginResult.sessionId = [result valueForKey:@"SessionID"]; loginResult.countryCode = [result valueForKey:@"CountryCode"]; } callBack(loginResult); [result release]; [loginResult release]; [self resetServer]; } } failure:^(NSError *err) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; NSLog(@"change server:%@",currentServer); [self loginWithUserName:username password:password token:token callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; LoginResult *loginResult = [[LoginResult alloc] init]; loginResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(loginResult); [loginResult release]; } }]; [parameter release]; } //获取账户信息 新AF - (void)getAccountInfo:(NSString *)username sessionId:(NSString *)sessionId callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSInteger iUsername = username.integerValue | 0x80000000; NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [parameter setObject:@"GetParam" forKey:@"Opion"]; [self requestHttp:@"Users/UpdateSafeSet.ashx" params:parameter success:^(id response) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:response]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getAccountInfo:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; AccountResult *accountResult = [[AccountResult alloc] init]; accountResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(accountResult); [accountResult release]; } }else{ AccountResult *accountResult = [[AccountResult alloc] init]; accountResult.error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(accountResult.error_code == NET_RET_GET_ACCOUNT_SUCCESS){ accountResult.phone = [result valueForKey:@"PhoneNO"]; accountResult.email = [result valueForKey:@"Email"]; accountResult.countryCode = [result valueForKey:@"CountryCode"]; } callBack(accountResult); [accountResult release]; [self resetServer]; } [result release]; } failure:^(NSError *err) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getAccountInfo:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; AccountResult *accountResult = [[AccountResult alloc] init]; accountResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(accountResult); [accountResult release]; } }]; } -(void)setAccountInfo:(NSString *)username password:(NSString *)password phone:(NSString *)phone email:(NSString *)email countryCode:(NSString *)countryCode phoneCheckCode:(NSString *)phoneCheckCode flag:(NSString *)flag sessionId:(NSString *)sessionId callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSInteger iUsername = username.integerValue | 0x80000000; NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:[password getMd5_32Bit_String] forKey:@"UserPwd"]; [parameter setObject:sessionId forKey:@"SessionID"]; [parameter setObject:email forKey:@"Email"]; [parameter setObject:phone forKey:@"PhoneNO"]; [parameter setObject:countryCode forKey:@"CountryCode"]; [parameter setObject:flag forKey:@"BindFlag"]; [parameter setObject:phoneCheckCode forKey:@"PhoneCheckCode"]; [parameter setObject:@"SetParam" forKey:@"Opion"]; [self requestHttp:currentServer actionPath:@"Users/UpdateSafeSet.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self setAccountInfo:username password:password phone:phone email:email countryCode:countryCode phoneCheckCode:phoneCheckCode flag:flag sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ callBack(((NSString*)[result valueForKey:@"error_code"]).intValue); [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self setAccountInfo:username password:password phone:phone email:email countryCode:countryCode phoneCheckCode:phoneCheckCode flag:flag sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } -(void)modifyLoginPasswordWithUserName:(NSString *)username sessionId:(NSString *)sessionId oldPwd:(NSString *)oldPwd newPwd:(NSString *)newPwd rePwd:(NSString *)rePwd callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSInteger iUsername = username.integerValue | 0x80000000; NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [parameter setObject:[oldPwd getMd5_32Bit_String] forKey:@"OldPwd"]; [parameter setObject:[newPwd getMd5_32Bit_String] forKey:@"Pwd"]; [parameter setObject:[rePwd getMd5_32Bit_String] forKey:@"RePwd"]; [self requestHttp:currentServer actionPath:@"Users/ModifyPwd.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self modifyLoginPasswordWithUserName:username sessionId:sessionId oldPwd:oldPwd newPwd:newPwd rePwd:rePwd callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ ModifyLoginPasswordResult *modifyLoginPasswordResult = [[ModifyLoginPasswordResult alloc] init]; modifyLoginPasswordResult.error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; modifyLoginPasswordResult.sessionId = [result valueForKey:@"SessionID"]; callBack(modifyLoginPasswordResult); [modifyLoginPasswordResult release]; [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self modifyLoginPasswordWithUserName:username sessionId:sessionId oldPwd:oldPwd newPwd:newPwd rePwd:rePwd callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } -(void)getPhoneCodeWithPhone:(NSString *)phone countryCode:(NSString *)countryCode callBack:(void (^)(id))callBack{ NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:countryCode forKey:@"CountryCode"]; [parameter setObject:phone forKey:@"PhoneNo"]; [self requestHttp:currentServer actionPath:@"Users/PhoneCheckCode.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getPhoneCodeWithPhone:phone countryCode:countryCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ callBack(((NSString*)[result valueForKey:@"error_code"]).intValue); [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getPhoneCodeWithPhone:phone countryCode:countryCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } #pragma mark -摄像头邮箱注册 -(void)registerWithVersionFlag:(NSString *)versionFlag email:(NSString *)email countryCode:(NSString *)countryCode phone:(NSString *)phone password:(NSString *)password repassword:(NSString *)repassword phoneCode:(NSString *)phoneCode callBack:(void (^)(id))callBack{ NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:@"1" forKey:@"VersionFlag"]; [parameter setObject:email forKey:@"Email"]; [parameter setObject:countryCode forKey:@"CountryCode"]; [parameter setObject:phone forKey:@"PhoneNo"]; [parameter setObject:[password getMd5_32Bit_String] forKey:@"Pwd"]; [parameter setObject:[repassword getMd5_32Bit_String] forKey:@"RePwd"]; [parameter setObject:phoneCode forKey:@"VerifyCode"]; [parameter setObject:@"1" forKey:@"IgnoreSafeWarning"]; //新AF方法 [self requestHttp:@"Users/RegisterCheck.ashx" params:parameter success:^(id response) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:response]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self registerWithVersionFlag:versionFlag email:email countryCode:countryCode phone:phone password:password repassword:repassword phoneCode:phoneCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ RegisterResult *registerResult = [[RegisterResult alloc] init]; registerResult.error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; int iContactId = ((NSString*)[result valueForKey:@"UserID"]).integerValue & 0x7fffffff; registerResult.contactId = [NSString stringWithFormat:@"0%i",iContactId]; callBack(registerResult); [self resetServer]; } } failure:^(NSError *err) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self registerWithVersionFlag:versionFlag email:email countryCode:countryCode phone:phone password:password repassword:repassword phoneCode:phoneCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }]; } -(void)verifyPhoneCodeWithCode:(NSString *)phoneCode phone:(NSString *)phone countryCode:(NSString *)countryCode callBack:(void (^)(id))callBack{ NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; [parameter setObject:countryCode forKey:@"CountryCode"]; [parameter setObject:phone forKey:@"PhoneNo"]; [parameter setObject:phoneCode forKey:@"VerifyCode"]; [self requestHttp:currentServer actionPath:@"Users/PhoneVerifyCodeCheck.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(((NSString*)[result valueForKey:@"error_code"]).intValue==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self verifyPhoneCodeWithCode:phoneCode phone:phone countryCode:countryCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ callBack(((NSString*)[result valueForKey:@"error_code"]).intValue); [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self verifyPhoneCodeWithCode:phoneCode phone:phone countryCode:countryCode callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } -(void)checkNewMessage:(NSString *)username sessionId:(NSString *)sessionId callBack:(void (^)(id JSON))callBack{ if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [self requestHttp:currentServer actionPath:@"MSG/IsAnyMsgEx.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(((NSString*)[result valueForKey:@"error_code"]).intValue==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self checkNewMessage:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; CheckNewMessageResult *checkNewMessageResult = [[CheckNewMessageResult alloc] init]; checkNewMessageResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(checkNewMessageResult); [checkNewMessageResult release]; } }else{ NSString *trl = [result valueForKey:@"TRL"]; //NSString *srl = [result valueForKey:@"SRL"]; DLog(@"%@",trl); BOOL isNewContactMessage = NO; NSArray *array = [trl componentsSeparatedByString:@";"]; for(NSString *str in array){ NSArray *temp = [str componentsSeparatedByString:@":"]; if([[temp objectAtIndex:0] integerValue]==2&&[[temp objectAtIndex:1] integerValue]>0){ isNewContactMessage = YES; break; } } CheckNewMessageResult *checkNewMessageResult = [[CheckNewMessageResult alloc] init]; checkNewMessageResult.error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; checkNewMessageResult.isNewContactMessage = isNewContactMessage; callBack(checkNewMessageResult); [checkNewMessageResult release]; [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self checkNewMessage:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; CheckNewMessageResult *checkNewMessageResult = [[CheckNewMessageResult alloc] init]; checkNewMessageResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(checkNewMessageResult); [checkNewMessageResult release]; } } ]; [parameter release]; } -(void)getContactMessageWithUsername:(NSString *)username sessionId:(NSString *)sessionId callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [parameter setObject:@"2" forKey:@"MsgType"]; [self requestHttp:currentServer actionPath:@"MSG/GetMsgEx.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(((NSString*)[result valueForKey:@"error_code"]).intValue==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getContactMessageWithUsername:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ NSString *rl = [result valueForKey:@"RL"]; NSString *surplus = [result valueForKey:@"Surplus"]; NSMutableArray *datas = [NSMutableArray arrayWithCapacity:0]; NSArray *array = [rl componentsSeparatedByString:@";"]; for(NSString *str in array){ if([str isEqualToString:@""]){ continue; } NSArray *temp = [str componentsSeparatedByString:@"&"]; GetContactMessageResult *getContactMessageResult = [[GetContactMessageResult alloc] init]; getContactMessageResult.flag = [[temp objectAtIndex:0] integerValue]; getContactMessageResult.contactId = [NSString stringWithFormat:@"0%ld",[[temp objectAtIndex:1] integerValue]&0x7fffffff]; getContactMessageResult.message = [NSString stringWithFormat:@"%@",[temp objectAtIndex:3]]; NSString *timeStr = [temp objectAtIndex:4]; long timeInterval = [[Utils dateFromString2:timeStr] timeIntervalSince1970]; getContactMessageResult.time = [NSString stringWithFormat:@"%ld",timeInterval]; [datas addObject:getContactMessageResult]; [getContactMessageResult release]; } DLog(@"%@",rl); callBack(datas); [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getContactMessageWithUsername:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } -(void)checkAlarmMessage:(NSString *)username sessionId:(NSString *)sessionId callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [self requestHttp:currentServer actionPath:@"MSG/IsAnyMsgEx.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(((NSString*)[result valueForKey:@"error_code"]).intValue==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self checkNewMessage:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; CheckAlarmMessageResult *checkAlarmMessageResult = [[CheckAlarmMessageResult alloc] init]; checkAlarmMessageResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(checkAlarmMessageResult); [checkAlarmMessageResult release]; } }else{ NSString *trl = [result valueForKey:@"TRL"]; NSString *srl = [result valueForKey:@"SRL"]; DLog(@"%@",trl); DLog(@"%@",srl); BOOL isNewAlarmMessage = NO; NSArray *array = [trl componentsSeparatedByString:@";"]; for(NSString *str in array){ NSArray *temp = [str componentsSeparatedByString:@":"]; if([[temp objectAtIndex:0] integerValue]==3&&[[temp objectAtIndex:1] integerValue]>0){ isNewAlarmMessage = YES; break; } } CheckAlarmMessageResult *checkAlarmMessageResult = [[CheckAlarmMessageResult alloc] init]; checkAlarmMessageResult.error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; checkAlarmMessageResult.isNewAlarmMessage = isNewAlarmMessage; callBack(checkAlarmMessageResult); [checkAlarmMessageResult release]; [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self checkAlarmMessage:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; CheckAlarmMessageResult *checkAlarmMessageResult = [[CheckAlarmMessageResult alloc] init]; checkAlarmMessageResult.error_code = NET_RET_UNKNOWN_ERROR; callBack(checkAlarmMessageResult); [checkAlarmMessageResult release]; } } ]; [parameter release]; } -(void)getAlarmMessageWithUsername:(NSString *)username sessionId:(NSString *)sessionId callBack:(void (^)(id))callBack{ if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; [parameter setObject:@"2" forKey:@"MsgType"]; [self requestHttp:currentServer actionPath:@"MSG/GetMsgEx.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(((NSString*)[result valueForKey:@"error_code"]).intValue==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getContactMessageWithUsername:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } }else{ NSString *rl = [result valueForKey:@"RL"]; NSString *surplus = [result valueForKey:@"Surplus"]; NSMutableArray *datas = [NSMutableArray arrayWithCapacity:0]; NSArray *array = [rl componentsSeparatedByString:@";"]; for(NSString *str in array){ if([str isEqualToString:@""]){ continue; } NSArray *temp = [str componentsSeparatedByString:@"&"]; GetContactMessageResult *getContactMessageResult = [[GetContactMessageResult alloc] init]; getContactMessageResult.flag = [[temp objectAtIndex:0] integerValue]; getContactMessageResult.contactId = [NSString stringWithFormat:@"0%ld",[[temp objectAtIndex:1] integerValue]&0x7fffffff]; getContactMessageResult.message = [NSString stringWithFormat:@"%@",[temp objectAtIndex:3]]; NSString *timeStr = [temp objectAtIndex:4]; long timeInterval = [[Utils dateFromString2:timeStr] timeIntervalSince1970]; getContactMessageResult.time = [NSString stringWithFormat:@"%ld",timeInterval]; [datas addObject:getContactMessageResult]; [getContactMessageResult release]; } DLog(@"%@",rl); callBack(datas); [self resetServer]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getAlarmMessageWithUsername:username sessionId:sessionId callBack:callBack]; }else{ [self randomServer]; reconnectCount = 0; callBack(NET_RET_UNKNOWN_ERROR); } } ]; [parameter release]; } #pragma mark - 获取报警记录 - (void) getAlarmRecordWithUsername:(NSString *)username sessionId:(NSString *)sessionId option:(NSString*)option msgIndex:(NSString *)msgIndex senderList:(NSString *)senderList checkLevelType:(NSString *)checkLevelType vKey:(NSString *)vKey callBack:(void (^)(id JSON))callBack{ if([username isEqual:@"0517400"]){ return; } NSMutableDictionary *parameter = [[NSMutableDictionary alloc] init]; NSInteger iUsername = username.integerValue | 0x80000000; [parameter setObject:[NSString stringWithFormat:@"%d",(int)iUsername] forKey:@"UserID"]; [parameter setObject:sessionId forKey:@"SessionID"]; if (msgIndex) { [parameter setObject:msgIndex forKey:@"MsgIndex"]; } [parameter setObject:@"20" forKey:@"PageSize"]; [parameter setObject:option forKey:@"Option"]; [parameter setObject:senderList forKey:@"SenderList"]; [parameter setObject:checkLevelType forKey:@"CheckLevelType"]; // password encrypt 获取警报记录 // NSString *encryptPwd = [libPwdEncrypt passwordEncryptWithPassword:vKey]; // [parameter setObject:encryptPwd forKey:@"VKey"]; [self requestHttp:currentServer actionPath:@"Alarm/AlarmRecordEx.ashx" parameter:parameter success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithDictionary:JSON]; DLog(@"error_code:%@",[result valueForKey:@"error_code"]); DLog(@"error:%@",[result valueForKey:@"error"]); int error_code = ((NSString*)[result valueForKey:@"error_code"]).intValue; if(error_code==NET_RET_SESSION_ERROR){ [self onSessionIdError]; }else if(error_code==1||error_code==29||error_code==999){ if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getAlarmRecordWithUsername:username sessionId:sessionId option:option msgIndex:msgIndex senderList:senderList checkLevelType:checkLevelType vKey:vKey callBack:callBack]; }else{ GetAlarmRecordResult *alarmresult = [[GetAlarmRecordResult alloc]init]; alarmresult.error_code = NET_RET_UNKNOWN_ERROR; [self randomServer]; reconnectCount = 0; callBack(alarmresult); [alarmresult release]; } }else{ GetAlarmRecordResult *alarmresult = [[GetAlarmRecordResult alloc] init]; alarmresult.error_code = error_code; NSString *RL = [result objectForKey:@"RL"]; NSMutableArray *alarmRecord = [NSMutableArray arrayWithCapacity:0]; NSArray *array = [RL componentsSeparatedByString:@";"]; for(NSString *record in array){ if([record isEqualToString:@""]){ continue; } NSArray *detailArray = [record componentsSeparatedByString:@"&"]; Alarm * alarm = [[Alarm alloc] init]; for (int i = 0; i < detailArray.count; i++) { switch (i) { case 0: { alarm.msgIndex = detailArray[i]; } break; case 1: { alarm.deviceId = detailArray[i]; } break; case 2: { alarm.alarmTime = detailArray[i]; } break; case 4: { alarm.alarmType = [detailArray[i] intValue]; } break; case 5: { alarm.alarmGroup = [detailArray[i] intValue]; } break; case 6: { alarm.alarmItem = [detailArray[i] intValue]; } break; } } [alarmRecord addObject:alarm]; [alarm release]; } alarmresult.alarmRecord = alarmRecord; callBack(alarmresult); [self resetServer]; [alarmresult release]; } [result release]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { if(reconnectCount<([servers count]-1)){ reconnectCount++; currentServer = [NSString stringWithFormat:@"%@",[servers objectAtIndex:reconnectCount]]; DLog(@"change server:%@",currentServer); [self getAlarmRecordWithUsername:username sessionId:sessionId option:option msgIndex:msgIndex senderList:senderList checkLevelType:checkLevelType vKey:vKey callBack:callBack]; }else{ GetAlarmRecordResult *alarmresult = [[GetAlarmRecordResult alloc]init]; alarmresult.error_code = NET_RET_UNKNOWN_ERROR; [self randomServer]; reconnectCount = 0; callBack(alarmresult); [alarmresult release]; } } ]; [parameter release]; } @end