您的位置:首页 > 理论基础 > 计算机网络

ASIHttpRequest addRequestHeader的处理

2014-10-14 14:33 302 查看
我现在用到了ASIHttpRequest来读取数据,这时候我发现里面的头在很多时候都是一样的。如用户的令牌,设备类型,ios版本,软件版本等

[self.requestaddRequestHeader:@"Authorization"value:[SaveDatagetStringFromSetting:@"Ticket"]];
[self.requestaddRequestHeader:@"DeviceType"value:[StaticDatagetDeviceType]];
[self.requestaddRequestHeader:@"SystemVersion"value:[StaticDatagetSystemVersion]];
[self.requestaddRequestHeader:@"LocalVersion"value:[StaticDatagetLocalVersion]];


如果在每一个访问网络的地方都加这一个,这样重复性就很大,所以需要抽出来。

我的想法是在父类中放一个方法,把我们需要访问的网址给这个方法就可以了,所以我在父类中写了一个读取的方法。

-(void)readNetworkDataWithUrl:(NSString*)urlnumber:(int)number
{
[HUDshow:YES];//显示加载中状态

url=[NSStringstringWithFormat:@"%@%@",[StaticDatagetUrlDomain],url];
//访问的地址
NSURL*_url=[NSURLURLWithString:url];
//访问
self.request=[ASIHTTPRequestrequestWithURL:_url];
//超时时间多少秒
[self.requestsetTimeOutSeconds:120];
//访问失败重新访问次数
[self.requestsetNumberOfTimesToRetryOnTimeout:2];
//是否使用持久化连接
[self.requestsetShouldAttemptPersistentConnection:NO];
[self.requestaddRequestHeader:@"Authorization"value:[SaveDatagetStringFromSetting:@"Ticket"]];
[self.requestaddRequestHeader:@"DeviceType"value:[StaticDatagetDeviceType]];
[self.requestaddRequestHeader:@"SystemVersion"value:[StaticDatagetSystemVersion]];
[self.requestaddRequestHeader:@"LocalVersion"value:[StaticDatagetLocalVersion]];

//获取数据成功执行的方法
[self.requestsetCompletionBlock:^(void){
[HUDhide:YES];//隐藏加载中状态
NSString*jsonString=[self.requestresponseString];
[self.delegate1viewBaseReadDataSuccessWith:jsonStringnumber:number];
}];

//获取数据失败执行的方法
[self.requestsetFailedBlock:^(void){
[HUDhide:YES];//隐藏加载中状态
if([self.delegate1respondsToSelector:@selector(viewBaseReadDataFailed:)]){
[self.delegate1viewBaseReadDataFailed:number];
}
}];

[self.requestsetDelegate:self];
[self.requeststartAsynchronous];
}


本来我是想把读到的值直接作返回值返出去,可是好象是异步处理的,返不出去。我就只能想办法通过Delegate接口来把值传出去了。

就是其中的

[self.delegate1viewBaseReadDataSuccessWith:jsonStringnumber:number];
[self.delegate1viewBaseReadDataFailed:number];


现在我就通过继承父类的接口来实现数据的处理。

实现方法如下:

#pragmamark-
#pragmamarkViewBaseForConnectNetworkDelegate
-(void)viewBaseReadDataSuccessWith:(NSString*)jsonStringnumber:(int)nunmber
{
NSMutableDictionary*tempDictionary=[jsonStringJSONValue];
boolresult=[[tempDictionaryobjectForKey:@"Result"]intValue];

if(result){
NSLog(@"intrue");
NSString*ticket=[[tempDictionaryobjectForKey:@"Content"]objectForKey:@"Ticket"];
NSLog(@"%@",ticket);
}else{
NSLog(@"infalse");
NSString*message=[tempDictionaryobjectForKey:@"Message"];
NSLog(@"%@",message);
}

LoginSuccessViewController*newView=[[LoginSuccessViewControlleralloc]init];
newView.title=@"登录成功";
newView.hidesBottomBarWhenPushed=YES;
[self.navigationControllerpushViewController:newViewanimated:YES];

}

-(void)viewBaseReadDataFailed:(int)number{
NSLog(@"出错执行的方法");
}


这样就实现了我把公用的头放到父类中的功能。

其中的(int)nunmber是处理一个页面中会出现多次的请求,来区分是处理哪一个数据的。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: