我现在用到了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. JavaScript中指针和地址理解

    个人理解:指针只是指向内存的一个索引:而地址则是内存中确切的位置. 下面是函数中关于指针和地址一个小例子: function sum(num1,num2){ return num1+num2; } a ...

  2. HDFS简介【全面讲解】

    http://www.cnblogs.com/chinacloud/archive/2010/12/03/1895369.html [一]HDFS简介HDFS的基本概念1.1.数据块(block)HD ...

  3. 移动互联网实战--Apple的APNS桩推送服务的实现(1)

    前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...

  4. Codeforces Flipping game 动态规划基础

    题目链接:http://codeforces.com/problemset/problem/327/A 这道题目有O(N^3)的做法,这里转化为动态规划求解,复杂度是O(N) #include < ...

  5. leetcode 135. Candy ----- java

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...

  6. Codeforces Round #131 (Div. 2)

    A. System of Equations \(a\)的范围在\(\sqrt n\)内,所以暴力枚举即可. B. Hometask 需要被2.5整除,所以末位必然为0,如果0没有出现,则直接返回-1 ...

  7. 数据库实验一 SQL Service的安装

    SQL 2014 安装需要 Microsoft .Net Framework 3.5框架 win 8.1 Microsoft .Net Framework 3.5框架安装教程:点我 安装图文教程:点我 ...

  8. LNMP-查看安装编译时参数

    查看mysql编译参数: cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE_LINE 查看apache编译参数: cat $apachehome$/ ...

  9. 通过 Javacore 诊断线程挂起等性能问题

    http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuzy_jav ...

  10. python2.7处理https稍微好点的办法(坑得一笔)

    from warnings import filterwarnings filterwarnings('ignore') r = requests.get(url, headers=headers, ...