add .gitignore
This commit is contained in:
261
msext/Class/SGGateway/SGGatewayApi.m
Executable file
261
msext/Class/SGGateway/SGGatewayApi.m
Executable file
@@ -0,0 +1,261 @@
|
||||
//
|
||||
// GatewayApi.m
|
||||
// PublicFuncClass
|
||||
//
|
||||
// Created by an chen on 12-8-30.
|
||||
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
/*
|
||||
* 释放
|
||||
*/
|
||||
#import "SGGatewayApi.h"
|
||||
#import "NSString+SBJSON.h"
|
||||
#import "SBJSON.h"
|
||||
#import "FuncPublic.h"
|
||||
#import "SGGateway.h"
|
||||
#import "SGDefineInfo.h"
|
||||
#import "FuncPublic.h"
|
||||
@implementation SGGatewayApi
|
||||
|
||||
@synthesize _mUrl;
|
||||
@synthesize _mvReturn;
|
||||
@synthesize _returnFunction;
|
||||
@synthesize _act;
|
||||
@synthesize receivedBufferData;//返回的信息
|
||||
@synthesize _objDo;
|
||||
-(id)init
|
||||
{
|
||||
if((self=[super init]))
|
||||
{
|
||||
receivedBufferData = [[NSMutableData alloc]init];
|
||||
//(**)
|
||||
_objDo = [[NSMutableDictionary alloc]init];
|
||||
_act = [[NSString alloc] initWithString:@""];
|
||||
DelayerErro = NO;
|
||||
OnceAlert=YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)dealloc
|
||||
{
|
||||
NSLog(@"释放:%@",_act);
|
||||
SG_RELEASE(receivedBufferData);
|
||||
SG_RELEASE(_mUrl);
|
||||
SG_RELEASE(_act);
|
||||
SG_RELEASE(_objDo);
|
||||
[super dealloc];
|
||||
}
|
||||
/*
|
||||
* 延时处理
|
||||
*/
|
||||
-(void)delayer
|
||||
{
|
||||
[_DelayerTimer invalidate];
|
||||
[[FuncPublic SharedFuncPublic] StopActivityAnimation];
|
||||
NSLog(@"通信失败:%@",_act);
|
||||
if (OnceAlert) {
|
||||
|
||||
// OnceAlert=NO;
|
||||
// [self performSelector:@selector(ComeBack) withObject:nil afterDelay:50.0f];
|
||||
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络不可用"
|
||||
// message:@"无法与服务器通讯,请连接到移动数据网络或者WIFI"
|
||||
// delegate:self
|
||||
// cancelButtonTitle:@"确定"
|
||||
// otherButtonTitles:nil, nil];
|
||||
// [alert show];
|
||||
// [alert release];
|
||||
[FuncPublic ShowAlert:@"无法与服务器通讯,请连接到移动数据网络或者WIFI" title:@"网络不可用" viewController:nil];
|
||||
}
|
||||
|
||||
//[_mvReturn performSelector:_returnFunction withObject:nil];
|
||||
DelayerErro = YES;
|
||||
}
|
||||
-(void)ComeBack
|
||||
{
|
||||
OnceAlert=YES;
|
||||
}
|
||||
/*
|
||||
* 参数:
|
||||
*
|
||||
* mv: 回调的目标类
|
||||
*
|
||||
* returnFunc: 回调的方法
|
||||
*
|
||||
* obj_do: 于后台交互成功后,将信息传回mv类
|
||||
*
|
||||
* param_post: 于后交互的相关参数
|
||||
*
|
||||
* str: url信息
|
||||
*
|
||||
*/
|
||||
-(void)gateway:(id)mv func:(SEL)returnFunc obj_post:(NSMutableDictionary*)obj_post obj_post:(NSMutableDictionary*)param_post STR:(NSString*)str HTTPMethod:(NSString*)_method{
|
||||
/*
|
||||
* 延时处理,如果通信超过指定时间,则结束通信
|
||||
*/
|
||||
if (![str isEqualToString:@"UpdateAPNSDevice.aspx"]) {
|
||||
[[FuncPublic SharedFuncPublic] StartActivityAnimation:mv];
|
||||
}
|
||||
|
||||
_DelayerTimer = [NSTimer scheduledTimerWithTimeInterval:GATEWAY_DELAYER target:self selector:@selector(delayer) userInfo:nil repeats:NO];
|
||||
|
||||
_mvReturn = mv;
|
||||
_returnFunction = returnFunc;
|
||||
_objDo = obj_post;
|
||||
|
||||
if( ![[param_post objectForKey:@"t"] isEqual:@""] )//关键联接名
|
||||
{
|
||||
if( [param_post objectForKey:@"t"] == nil )
|
||||
{
|
||||
_act = str;
|
||||
}
|
||||
else
|
||||
{
|
||||
_act = [param_post objectForKey:@"t"];
|
||||
}
|
||||
}
|
||||
_mUrl = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@%@",SERVER,str]];
|
||||
|
||||
/*
|
||||
* 增加一些固传参数 code start
|
||||
*/
|
||||
if( [param_post objectForKey:@"code"] != nil )
|
||||
{
|
||||
NSArray *array = [param_post allKeys];//[[param_post allKeys]sortedArrayUsingSelector: @selector(compare:)];
|
||||
NSString* post = @"";
|
||||
for(int i = 0; i<[array count]; i++){
|
||||
if( [[param_post objectForKey:[array objectAtIndex:i]] isEqualToString:@"nn"])
|
||||
continue;
|
||||
post = [post stringByAppendingString:[param_post objectForKey:[array objectAtIndex:i]]];
|
||||
}
|
||||
post = [post stringByAppendingFormat:@"WERTY#$&(HJKfghjWERTYUIFGJFGHadf2222"];
|
||||
post = [FuncPublic md5:post];
|
||||
[param_post setObject:post forKey:@"code"];
|
||||
}
|
||||
/*
|
||||
* code end
|
||||
*/
|
||||
//生成post的数据
|
||||
NSData *postData = [self generateFormDataFromPostDictionary:param_post];//将传入的单独obj_post中的key使用=和&组合
|
||||
|
||||
|
||||
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; //post的长度
|
||||
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
|
||||
|
||||
[request setHTTPMethod:@"POST"]; //设置使用的方法
|
||||
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];//设置数据的长度
|
||||
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];//数据的类型
|
||||
[request setHTTPBody:postData]; //设置发送的数据
|
||||
|
||||
NSString* post_string = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];//将nsdata转为encoding
|
||||
if( [_method isEqualToString:@"POST"] )
|
||||
{
|
||||
[request setURL:[NSURL URLWithString:_mUrl]];
|
||||
}else if( [_method isEqualToString:@"POSTtwo"] )
|
||||
{
|
||||
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",SERVERTwo,str]]];
|
||||
|
||||
}else
|
||||
{
|
||||
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@?%@",_mUrl,post_string ]]]; //设置调用的url
|
||||
}
|
||||
NSLog(@"%@",[NSString stringWithFormat:@"%@?%@",_mUrl,post_string ]);
|
||||
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self]; //开始连接后台
|
||||
|
||||
if (conn) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
SG_RELEASE(post_string);
|
||||
[param_post removeAllObjects];
|
||||
SG_RELEASE(param_post);
|
||||
}
|
||||
|
||||
- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)res {
|
||||
[receivedBufferData setLength:0];
|
||||
}
|
||||
|
||||
|
||||
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)receivedData {
|
||||
[receivedBufferData appendData:receivedData]; //添加记录的资料
|
||||
}
|
||||
|
||||
|
||||
- (void)connection:(NSURLConnection *)conn didFailWithError:(NSError *)error {
|
||||
|
||||
}
|
||||
-(NSString *)HandelData:(NSString *)str_
|
||||
{
|
||||
NSString *string=nil;
|
||||
//ValidateUserIDAndPassword.aspx UpdateAPNSDevice.aspx InsertBookComment.aspx
|
||||
if ([_act isEqualToString:@"InsertSuggestInfo.aspx"]||[_act isEqualToString:@"UpdateAPNSDevice.aspx"]||[_act isEqualToString:@"InsertBookComment.aspx"]) {
|
||||
string=[NSString stringWithFormat:@"{\"data\":[{\"result\":%@}]}",str_];
|
||||
return string;
|
||||
}
|
||||
string=str_;
|
||||
|
||||
return string;
|
||||
}
|
||||
- (void)connectionDidFinishLoading:(NSURLConnection *)conn {
|
||||
NSLog(@"apiReturnOk:%@",_act);
|
||||
if( DelayerErro ) return;
|
||||
[_DelayerTimer invalidate];
|
||||
NSString* stra = [[NSString alloc] initWithData:receivedBufferData encoding:NSUTF8StringEncoding]; //转换信息
|
||||
//去除两边空格
|
||||
NSString* str = [[NSString alloc]initWithFormat:@"%@",[stra stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
|
||||
|
||||
SG_RELEASE(stra);
|
||||
if ([str isEqualToString: @""] == YES) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(1){
|
||||
NSLog(@"[%@]",str);
|
||||
}
|
||||
NSString *handleStr=[self HandelData:str];
|
||||
NSMutableDictionary * obj_return = [handleStr JSONValue];//使用js解压
|
||||
if( obj_return == nil )
|
||||
{
|
||||
[[FuncPublic SharedFuncPublic] StopActivityAnimation];//需要于funcpublic共用
|
||||
// [FuncPublic ShowAlert:@"Api错误!"];
|
||||
// [FuncPublic ShowAlert:@"没有数据!"];
|
||||
[FuncPublic ShowAlert:@"没有数据!" title:nil viewController:nil];
|
||||
return;
|
||||
}
|
||||
NSLog(@"jsonDecode完成:%@",_act);
|
||||
|
||||
|
||||
[_objDo setObject:obj_return forKey:@"apiReturnData"];//将当前返回的信息和之前传入的参数,整合
|
||||
NSLog(@"开始回调:%@",_act);
|
||||
[_mvReturn performSelector:_returnFunction withObject:_objDo];//传到想应的方法中 _objDo:之前如果有传参进来,一并返回
|
||||
SG_RELEASE(str);
|
||||
NSLog(@"接口%@完成",_act);
|
||||
[[FuncPublic SharedFuncPublic] StopActivityAnimation];
|
||||
}
|
||||
- (NSData*)generateFormDataFromPostDictionary:(NSDictionary*)dict
|
||||
{
|
||||
NSArray* keys = [dict allKeys];
|
||||
NSMutableData* result = [NSMutableData data];
|
||||
|
||||
for (int i = 0; i < [keys count]; i++)
|
||||
{
|
||||
id value = [dict valueForKey: [keys objectAtIndex:i]];
|
||||
if(i > 0){
|
||||
[result appendData:[@"&" dataUsingEncoding:NSUTF8StringEncoding]];//NSASCIIStringEncoding
|
||||
}
|
||||
[result appendData:[[NSString stringWithFormat:@"%@" ,[keys objectAtIndex:i]] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
|
||||
[result appendData:[@"=" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
if ([value isKindOfClass:[NSData class]])
|
||||
{
|
||||
[result appendData:value];
|
||||
}
|
||||
else {
|
||||
[result appendData:DATA(value)];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user