我现在用到了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. 从数学角度看最大期望(EM)算法 I

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2014/11/18 更新.发现以前的公式(2)里有错误,现已改过来.由于这几天和Can讨论了EM算法,回头看我以前写的 ...

  2. MySQL数据库性能优化的关键参数(转)

    我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...

  3. SpringCloud学习后获取的地址

    关于SpringCloud + Docker 学习地址: (1) https://yq.aliyun.com/articles/57265 (2) https://yq.aliyun.com/team ...

  4. 解决织梦标签artlist不能调用副栏目的问题?

    本文转自:http://www.xinshou5.com/a/127.html 织梦列表页中不支持artlist这个标签,这样怎么调用副栏目? 想要在列表页调用副栏目,但是列表页不支持artlist这 ...

  5. 发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error。

    发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error. latke.props内容为: serverS ...

  6. Sqlserver 远程连接的 TCP/IP 和 Named Pipes的区别

    TCP/IP:  TCP/IP是 Internet 上广泛使用的通用协议.它与互连网络中硬件结构和操作系统各异的计算机进行通信.TCP/IP包括路由网络流量的标准,并能够提供高级安全功能.它是目前在商 ...

  7. 下载abap 源代码

    转自http://blog.sina.com.cn/s/blog_4d1570de0100pvhd.html *@------------------------------------------- ...

  8. Spring-IOC之前世今生

    没使用IOC之前 贯用工厂模式调用 bean组件 可类比为: 去商场买东西,你是先想好自己要买什么了,然后去寻找商品(逛商场的同学不要扯皮啊2333) 用了IOC之后 可类比为: 所有网上购物,所有的 ...

  9. c 函数及指针学习 4

    1数组和指针声明的差别 声明数组:为数组分配内存,为数组名分配内存(指针常量 4个字节) 指针:为指针分配内存(指针变量 4个字节) 1 2 3 4 5 6 7 8 9 10 #include < ...

  10. JS初学之-点击元素,当前的显示样式,其他变灰色

    点击按钮或者其他元素,当前的变化,其他的不变(比如选项卡按钮,点击当前的变为黄色,其他的不变色),这样的情况我们有两种思路: 1.全部清空,当前添加 for(var i=0;i<aBtn.len ...