我现在用到了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. LeetCode Minimum Path Sum (简单DP)

    题意: 给一个n*m的矩阵,每次可以往下或右走,经过的格子中的数字之和就是答案了,答案最小为多少? 思路: 比较水,只是各种空间利用率而已. 如果可以在原空间上作修改. class Solution ...

  2. Linux主机硬盘的主要规划

    系统对于硬盘的需求跟刚刚提到的主机开放的服务有关,那么除了这点之外,还有没有其他的注意事项?当然有,那就是数据的分类与数据安全性的考虑,即当主机系统的硬件出现问题时,你的档案数据能否安全的保存. 前篇 ...

  3. CPU的频率、外频、倍频与超频

    如,现有一CPU:Intel Core 2 Duo E8400,其频率是3.0GHz: CPU的外频指的是CPU与外部组件进行数据传输/运算时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者 ...

  4. UVa 1593代码对齐

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. Apahce的虚拟用户认证及server-status页

    一.Apache虚拟用户认证配置 编辑配置文件加入如下内容: <Directory "/www/htdoc/fin"> Options None AllowOverri ...

  6. timus 1982 Electrification Plan(最小生成树)

    Electrification Plan Time limit: 0.5 secondMemory limit: 64 MB Some country has n cities. The govern ...

  7. Java设计模式之责任链设计模式

    职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将所有处理对象连成一条链,并沿着这条链传递请求,直到有一个对象处理 ...

  8. Doing well in your courses ---- a guide by Andrej Karpathy

    Doing well in your courses a guide by Andrej Karpathy Here is some advice I would give to younger st ...

  9. (转) Lua string 操作函数

    本文转自: http://www.cnblogs.com/newlist/p/3649388.html table.keys 返回指定表格中的所有键. 格式: keys = table.keys(表格 ...

  10. Redis 源码解析

    http://programmers.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness- ...