ASIHttpRequest addRequestHeader的处理
我现在用到了ASIHttpRequest来读取数据,这时候我发现里面的头在很多时候都是一样的。如用户的令牌,设备类型,ios版本,软件版本等
[self.request addRequestHeader:@"Authorization" value:[SaveData getStringFromSetting:@"Ticket"]];
[self.request addRequestHeader:@"DeviceType" value:[StaticData getDeviceType]];
[self.request addRequestHeader:@"SystemVersion" value:[StaticData getSystemVersion]];
[self.request addRequestHeader:@"LocalVersion" value:[StaticData getLocalVersion]];
如果在每一个访问网络的地方都加这一个,这样重复性就很大,所以需要抽出来。
我的想法是在父类中放一个方法,把我们需要访问的网址给这个方法就可以了,所以我在父类中写了一个读取的方法。
-(void)readNetworkDataWithUrl:(NSString *)url number :(int)number
{
[HUD show:YES];//显示加载中状态 url = [NSString stringWithFormat:@"%@%@",[StaticData getUrlDomain],url];
//访问的地址
NSURL *_url = [NSURL URLWithString:url];
//访问
self.request = [ASIHTTPRequest requestWithURL:_url];
//超时时间多少秒
[self.request setTimeOutSeconds:];
//访问失败重新访问次数
[self.request setNumberOfTimesToRetryOnTimeout:];
//是否使用持久化连接
[self.request setShouldAttemptPersistentConnection:NO];
[self.request addRequestHeader:@"Authorization" value:[SaveData getStringFromSetting:@"Ticket"]];
[self.request addRequestHeader:@"DeviceType" value:[StaticData getDeviceType]];
[self.request addRequestHeader:@"SystemVersion" value:[StaticData getSystemVersion]];
[self.request addRequestHeader:@"LocalVersion" value:[StaticData getLocalVersion]]; //获取数据成功执行的方法
[self.request setCompletionBlock:^(void) {
[HUD hide:YES];//隐藏加载中状态
NSString *jsonString = [self.request responseString];
[self.delegate1 viewBaseReadDataSuccessWith:jsonString number:number];
}]; //获取数据失败执行的方法
[self.request setFailedBlock:^(void){
[HUD hide:YES];//隐藏加载中状态
if([self.delegate1 respondsToSelector:@selector(viewBaseReadDataFailed:)]){
[self.delegate1 viewBaseReadDataFailed:number];
}
}]; [self.request setDelegate:self];
[self.request startAsynchronous];
}
本来我是想把读到的值直接作返回值返出去,可是好象是异步处理的,返不出去。我就只能想办法通过Delegate接口来把值传出去了。
就是其中的
[self.delegate1 viewBaseReadDataSuccessWith:jsonString number:number];
[self.delegate1 viewBaseReadDataFailed:number];
现在我就通过继承父类的接口来实现数据的处理。
实现方法如下:
#pragma mark -
#pragma mark ViewBaseForConnectNetwork Delegate
-(void)viewBaseReadDataSuccessWith:(NSString *)jsonString number:(int)nunmber
{
NSMutableDictionary *tempDictionary = [jsonString JSONValue];
bool result = [[tempDictionary objectForKey:@"Result"] intValue]; if (result) {
NSLog(@"in true");
NSString *ticket = [[tempDictionary objectForKey:@"Content"] objectForKey:@"Ticket"];
NSLog(@"%@",ticket);
}else{
NSLog(@"in false");
NSString *message = [tempDictionary objectForKey:@"Message"];
NSLog(@"%@",message);
} LoginSuccessViewController *newView = [[LoginSuccessViewController alloc]init];
newView.title = @"登录成功";
newView.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:newView animated:YES]; } -(void)viewBaseReadDataFailed:(int)number{
NSLog(@"出错执行的方法");
}
这样就实现了我把公用的头放到父类中的功能。
其中的 (int)nunmber 是处理一个页面中会出现多次的请求,来区分是处理哪一个数据的。
ASIHttpRequest addRequestHeader的处理的更多相关文章
- 强大的HTTP包装开源项目ASIHTTPRequest介绍
		ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装.它的特色功能如下: 1,下载的数据直接保存到内存或文件系统里 2,提供 ... 
- iOS通过ASIHTTPRequest提交JSON数据
		先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且 ... 
- iOS - ASIHTTPRequest      网络请求
		前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 AP ... 
- ASIHTTPREQUEST  文档
		http://blog.csdn.net/ysysbaobei/article/details/17026577 Please note that I am no longer working on ... 
- IOS开发网络篇之──ASIHTTPRequest详解
		目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ... 
- ASIHttpRequest请求HTTPS
		一种方法 ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:[NSURLURLWithString:bodyString]]; [requ ... 
- iOS:ASIHttpRequest虽不更新,但仍值得详细了解
		一.使用ASIHTTPRequest可以很方便的进行一下操作:同步/异步方式下载数据,定义下载队列,让队列中的任务按指定的并发数来下载(队列下载必须是异步的),提交表单,文件上传,处理cookie,设 ... 
- ASIHTTPRequest学习(一)
		Creating a synchronous request 可以创建同步和异步两种方式的请求,一般情况下应当使用异步请求.使用同步请求主应用线程会锁住直至解锁为止. 创建异步请求,会在后台执行 - ... 
- ASIHTTPRequest中文入门教程全集 http://www.zpluz.com/thread-3284-1-1.html
		本文转载至 目录 3 第 1 章 创建和运行请求 5 1.1. 创建一个同步请求 5 1.2. 创建一个异步请求 5 1.3. 使用程序块(blocks ) 6 1.4. 使用 ... 
随机推荐
- NetCDF 格式化数据概述
			前言 马上要开始新的项目了.气象局方面要求处理的数据是 NetCDF 格式的,这是一种封装好了的数据结构,需要连接一些库,调用特定的 API 进行操作. 可这方面我知之甚少,遂利用周日上午的时间学习这 ... 
- Conference Search不错的学术会议日程提示网站
			一个不错的学术会议日程提示网站 http://www.confsearch.org,还可以通过内嵌框架(embedded iframe)集成到自己的网页上. http://www.confsearch ... 
- POJ 3268 Silver Cow Party (双向dijkstra)
			题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ... 
- xampp改到phpmyadmin的root密碼無法登錄
			open /Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php $cfg['Servers'][$i]['auth_type'] = 'co ... 
- Javascript模块化编程(二):AMD规范【转】
			作者: 阮一峰 日期: 2012年10月30日 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为 ... 
- socket 简介
			对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1. 什么是TCP/IP.UDP?2. Sock ... 
- springMVC访问静态资源的两种方式
			1<mvc:default-servlet-handler/> 2 <mvc:resources mapping="/images/**" location=&q ... 
- JS初学之-自定义属性(索引值)
			重点:1.添加索引值的作用:建立匹配.对应的关系. 比如:使每一个按钮对应数组里的每一张图,arrImg[this.index]. 2.不要在for循环的函数里面使用i. 3.添加索引值的方法aBtn ... 
- 输入DStream和Receiver详解
			输入DStream代表了来自数据源的输入数据流.在之前的wordcount例子中,lines就是一个输入DStream(JavaReceiverInputDStream),代表了从netcat(nc) ... 
- ThinkPHP缓存微信公众号access_token
			access_token作为微信的全局票据,在高级接口中需要频繁调用,其有效期为7200秒,即2小时,而微信官方对调用Token的次数有限制(参见接口频率限制说明),获取access_token每日限 ... 
