ifish/Ifish/controllers/IfishYooseeFile/IfishYooseeHelper/NetManager.m

1205 lines
55 KiB
Objective-C

//
// 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