我现在用到了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的处理的更多相关文章

  1. 强大的HTTP包装开源项目ASIHTTPRequest介绍

    ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装.它的特色功能如下: 1,下载的数据直接保存到内存或文件系统里 2,提供 ...

  2. iOS通过ASIHTTPRequest提交JSON数据

    先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且 ...

  3. iOS - ASIHTTPRequest 网络请求

    前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 AP ...

  4. ASIHTTPREQUEST 文档

    http://blog.csdn.net/ysysbaobei/article/details/17026577 Please note that I am no longer working on ...

  5. IOS开发网络篇之──ASIHTTPRequest详解

    目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ...

  6. ASIHttpRequest请求HTTPS

    一种方法 ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:[NSURLURLWithString:bodyString]]; [requ ...

  7. iOS:ASIHttpRequest虽不更新,但仍值得详细了解

    一.使用ASIHTTPRequest可以很方便的进行一下操作:同步/异步方式下载数据,定义下载队列,让队列中的任务按指定的并发数来下载(队列下载必须是异步的),提交表单,文件上传,处理cookie,设 ...

  8. ASIHTTPRequest学习(一)

    Creating a synchronous request 可以创建同步和异步两种方式的请求,一般情况下应当使用异步请求.使用同步请求主应用线程会锁住直至解锁为止. 创建异步请求,会在后台执行 - ...

  9. 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.  使用 ...

随机推荐

  1. NetCDF 格式化数据概述

    前言 马上要开始新的项目了.气象局方面要求处理的数据是 NetCDF 格式的,这是一种封装好了的数据结构,需要连接一些库,调用特定的 API 进行操作. 可这方面我知之甚少,遂利用周日上午的时间学习这 ...

  2. Conference Search不错的学术会议日程提示网站

    一个不错的学术会议日程提示网站 http://www.confsearch.org,还可以通过内嵌框架(embedded iframe)集成到自己的网页上. http://www.confsearch ...

  3. POJ 3268 Silver Cow Party (双向dijkstra)

    题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total ...

  4. xampp改到phpmyadmin的root密碼無法登錄

    open /Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php $cfg['Servers'][$i]['auth_type'] = 'co ...

  5. Javascript模块化编程(二):AMD规范【转】

    作者: 阮一峰 日期: 2012年10月30日 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为 ...

  6. socket 简介

    对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.         什么是TCP/IP.UDP?2.         Sock ...

  7. springMVC访问静态资源的两种方式

    1<mvc:default-servlet-handler/> 2 <mvc:resources mapping="/images/**" location=&q ...

  8. JS初学之-自定义属性(索引值)

    重点:1.添加索引值的作用:建立匹配.对应的关系. 比如:使每一个按钮对应数组里的每一张图,arrImg[this.index]. 2.不要在for循环的函数里面使用i. 3.添加索引值的方法aBtn ...

  9. 输入DStream和Receiver详解

    输入DStream代表了来自数据源的输入数据流.在之前的wordcount例子中,lines就是一个输入DStream(JavaReceiverInputDStream),代表了从netcat(nc) ...

  10. ThinkPHP缓存微信公众号access_token

    access_token作为微信的全局票据,在高级接口中需要频繁调用,其有效期为7200秒,即2小时,而微信官方对调用Token的次数有限制(参见接口频率限制说明),获取access_token每日限 ...