ASINetworkQueues(经典2)
ASINetworkQueues, 它的delegate提供更为丰富的功能
提 供的更多的回调方法如下: a,requestDidStartSelector,请求发起时会调此方法,你可以在此方法中跟据业务选择性的设置request对象的 deleaget。 b,requestDidReceiveResponseHeadersSelector,当接受完响应的Header后设计此方法,这个对下载大数据的 时候相当有用,你可以在方法里做更多业务上的处理。 c,requestDidFinishSelector,请求并响应成功完成时调用此方法 d,requestDidFailSelector,请求失败 e,queueDidFinishSelector,整个队列里的所有请求都结束时调用此方法。
它是NSOperationQueues的扩展,小而强大。但也与它的父类略有区别。如,仅添加到队列中其实并不能执行请求,只有调用[ queue g o]才会执行;一个正在运行中的队列,并不需要重复调用[ queue go ]。
默认情况下,队列中的一个请求如果失败,它会取消所有未完成的请求。可以设置[ queue setShouldCancelAllRequestsOnFailure:NO ]来修 正。 |
取消异步请求
首先,同步请求是不能取消的。 其次,不管是队列请求,还是简单的异步请求,全部调用[ request cancel ]来取消请求。
取消的请求默认都会按请求失败处理,并调用请求失败delegate。 如果不想调用delegate方法,则设置:[ request clearDelegatesAndCancel]; |
队 列请求中需要注意的是,如果你取消了一个请求,队列会自动取消其它所有请求。 如果只想取消一个请求,可以设置队列:[ queue setShouldCancelAllRequestsOnFailure:NO ]; 如果想明确取消所有请求:[ queue cancelAllOperations ];
安全的内存回收建议
request并没有retain你的delegate,所以在没有请求完的时候释放了此delegate,需要在dealloc方法里先取消所有请求,再释放请求实例,如:
- ( void )dealloc
{
[request clearDelegatesAndCancel];
[request release];
...
[ super dealloc];
}
|
向服务器端上传数据
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@ "Ben" forKey:@ "first_name" ];
[request setPostValue:@ "Copsey" forKey:@ "last_name" ];
[request setFile:@ "/Users/ben/Desktop/ben.jpg" forKey:@ "photo" ];
[request addData:imageData withFileName:@ "george.jpg" andContentType:@ "image/jpeg" forKey:@ "photos" ];
|
如果要发送自定义数据:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[@ "This is my data" dataUsingEncoding:NSUTF8StringEncoding]];
// Default becomes POST when you use appendPostData: / appendPostDataFromFile: / setPostBody:
[request setRequestMethod:@ "PUT" ];
|
下载文件
获取响应信息
信息:status , header, responseEncoding
[request responseStatusCode];
[[request responseHeaders] objectForKey:@ "X-Powered-By" ];
[request responseEncoding];
|
获取请求进度
有两个回调方法可以获取请求进度, 1,downloadProgressDelegate,可以获取下载进度 2,uploadProgressDelegate,可以获取上传进度
cookie的支持
//Create a cookie
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[@ "Test Value" encodedCookieValue] forKey:NSHTTPCookieValue];
[properties setValue:@ "ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName];
[properties setValue:@ ".allseeing-i.com" forKey:NSHTTPCookieDomain];
[properties setValue:[NSDate dateWithTimeIntervalSinceNow: 60 * 60 ] forKey:NSHTTPCookieExpires];
[properties setValue:@ "/asi-http-request/tests" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];
//This url will return the value of the 'ASIHTTPRequestTestCookie' cookie
url = [NSURL URLWithString:@ "http://allseeing-i.com/ASIHTTPRequest/tests/read_cookie" ];
request = [ASIHTTPRequest requestWithURL:url];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
[request startSynchronous];
//Should be: I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie'
NSLog(@ "%@" ,[request responseString]);
http://blog.sina.com.cn/s/blog_801997310101bi9r.html
|
转载于:https://www.cnblogs.com/fshmjl/p/4831214.html
ASINetworkQueues(经典2)相关推荐
- 经典笔试上机考题-表达式求值
相信参加过笔试面试同学应当见到过表达式求值这道题,下面列举的一道经典的考题,本文将同大家一起细细探讨一下表达式求值这一类问题的求法,希望抛砖引玉,其中有不妥的地方也请大家多多批评指正. /* 功能:四 ...
- 左神讲算法——异或的高级操作(两数交换+经典面试题)
目录 1. 异或的性质 2. 两数交换 3. 经典面试例题 参考链接:2021最新左神数据结构算法全家桶 1. 异或的性质 异或可以看成相同为1,不同为0:也可以看作无进位相加,有奇数个1则结果为1, ...
- 各种经典透镜投影模型
各种经典透镜投影模型 Models for the various classical lens projections 鱼眼镜片与其他镜片同等重要 where fisheye lenses are ...
- 车道线检测算法经典编程
车道线检测算法经典编程 车道线曲线拟合算法编程 计算经过(50,50),(90,120),(70,200)三点的Catmull_Rom样条曲线. IplImage* img = cvCreateIma ...
- 为经典版eclipse增加web and JavaEE插件
为经典版eclipse增加web and JavaEE插件 为经典版eclipse增加web and JavaEE插件 方法/步骤 在Eclipse中菜单help选项中选择install new so ...
- 数据挖掘的一些经典算法
数据挖掘能做以下七种不同事情 (分析方法): 数据挖掘能做以下七种不同事情 · 分类 (Classification) · 估计(Estimation) · 预测(Prediction) · 相关性分 ...
- 经典算法研究系列:二、Dijkstra 算法初探
经典算法研究系列:二.Dijkstra 算法初探 July 二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...
- [导入]实时数据库的经典书
有个朋友给我来了一封邮件,在邮件中,他这样写到:"国外的实时数据库来势汹汹,价格一路上扬:想当初eDNA 2003年刚到中国时也就是二.三十万左右,现在报价已经百万以前了.心里也总个一个结, ...
- 经典dp最长递增子序列
经典dp最大递增子序列, 看了好长时间,看了好多版本.最终因为这个看懂,也觉得这个是最全面的吧,我感觉我好菜啊. http://wenku.baidu.com/view/bed07b15552707 ...
最新文章
- Mac系统兼容软件 CrossOver 试用到期了怎么办
- 蓝牙BLE ATT剖析(一)
- 线程池ThreadPoolExcutor
- ie8不发送ajax,IE8用ajax访问不能每次都刷新的问题
- php 输出text格式化,php printf() 输出格式化的字符串,phpprintf
- leetcode - 621. 任务调度器
- 【操作系统】第3章 进程管理与调度
- Luogu P1041 [2003NOIP提高组]传染病控制
- android 学习之SurfaceView
- 【学习笔记】matlab进行数字信号处理(三)数字滤波技术
- 6.28lol服务器维护,LOL6月28日无法连接至验证服务怎么回事 6.28进不去游戏怎么办?...
- 卓一笔记---局部描述符表(LDT寻址表)的使用
- 上面两点下面一个三角形_三角形光栅化
- 使用matlab和GMT联合绘制带有省界的中国地图
- [学习笔记]多元线性回归分析——理解篇
- 图片延迟加载对seo有什么影响呢?
- 增强学习(Q-learning)
- group by 用法
- oracle lag使用情景,lag函数用法
- 无线传感器网络技术中的关键性问题
热门文章
- ubuntu10.04 的服务管理变动
- 因特网的协议集称为TCP/IP协议集
- DELL Poweredge服务器安装操作系统指南 补全之磁盘驱动制作
- grpc使用记录(一) gRPC编译(mscv/gcc)
- egret 开发总结
- redis集群之主从架构
- Hyper-V虚拟机win7网络红叉,无法上网解决方法
- delphi之http通讯
- C++的黑科技(深入探索C++对象模型)
- bzoj1717 [Usaco2006 Dec]Milk Patterns 产奶的模式