ASIHttpRequest 使用理解
开源库:ASIHttpRequest
ASIHttpRequest 下载网址:http://github.com/pokeb/asi-http-request
依赖的5个库文件:CFNetwork, SystemConfiguration,MobileCoreServices,和libz , libxml2
//通过类方法来控制队列的执行个数,但是它一旦发送请求会被立刻执行,不能进行逻辑的控制
[ASIHTTPRequest sharedQueue].maxConcurrentOperationCount = 1;
//请求队列的初始化
// self.queue = [ASINetworkQueue queue];
//并发执行的个数
// self.queue.maxConcurrentOperationCount = 1;
//让队列执行下去,创建队列可以有我们控制他的执行逻辑顺序
//[self.queue go];
//发送异步请求
-(void)aSynchronous:(NSURL *)url
{
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"GET"];
[request setTimeOutSeconds:60];
//发送异步请求代理
// request.delegate = self;
//请求数据完成的时候调用Block
[request setCompletionBlock:^{
NSData *data = request.responseData;
UIImage *image = [UIImage imageWithData:data];
self.image = image;
if (request.didUseCachedResponse) {
NSLog(@"来至于缓存");
}else {
NSLog(@"是来至网络");
}
}];
//请求数据失败调用Block
[request setFailedBlock:^{
NSLog(@"请求数据失败");
}];
//------------------------设置缓存策略-----------
NSString *cachePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"];
ASIDownloadCache *cache = [[ASIDownloadCache alloc] init];
[cache setStoragePath:cachePath];
cache.defaultCachePolicy = ASIOnlyLoadIfNotCachedCachePolicy;
//这会在每一次绘画的时候清除上一次存储的
request.cacheStoragePolicy = ASICacheForSessionDurationCacheStoragePolicy;
//这里创建持久缓存,每次要调用时直接从内存中调用
//request.cacheStoragePolicy = ASICachePermanentlyCacheStoragePolicy;
// request.downloadCache = cache;
//开始异步请求
[request startAsynchronous];
//将请求添加到队列里
//通过句柄来设置获取实例对象
// AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
// [appDelegate.queue addOperation:request];
}
//发送同步请求
-(void)synchronous:(NSURL *)url
{
// ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setRequestMethod:@"GET"];
[request setTimeOutSeconds:60];
//设置请求头
//[request setRequestHeaders:<#(NSMutableDictionary *)#>];
//设置Cookier
// [request setRequestCookies:<#(NSMutableArray *)#>];
//发送同步请求
[request startSynchronous];
//接收是否有错误信息
NSError *error = request.error;
if (error == nil) {
NSData *data = request.responseData;
UIImage *image = [UIImage imageWithData:data];
self.image = image;
}else{
NSLog(@"发送同步请求数据出错:%@",error);
}
}
#pragma mark ---aSynchronous delegate
//完成异步请求
- (void)requestFinished:(ASIHTTPRequest *)request
{
//获取数据
NSData *data = request.responseData;
UIImage *image = [UIImage imageWithData:data];
self.image = image;
}
//异步请求失败
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = request.error;
NSLog(@"异步请求失败:%@",error);
}
其他方法:
ASIHttpRequest 使用理解的更多相关文章
- 深入理解RunLoop
网上看的一篇文章,写的真好,我得多看几次好好理解理解 膜拜大神,转载至此便于学习查看. 此处标明原文链接:http://blog.ibireme.com/2015/05/18/runloop/ ...
- ios开发理解nil,Nil, NULL
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [ ...
- 通过回调函数的理解来进一步理解ajax及其注意的用法
一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...
- ASIHTTPRequest系列(一):同步和异步请求
ASIHTTPRequest系列(一):同步和异步请求 发表于8个月前(2013-11-27 19:21) 阅读(431) | 评论(0) 6人收藏此文章, 我要收藏 赞0 ASIHTTPRequ ...
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
源码:http://files.cnblogs.com/ios8/ASIHttpRequestDemo2.zip NSURL *url = [NSURLURLWithString:@"htt ...
- ASIHTTPRequest 问题总结
1, ASIHttpRequest与30秒超时 今天在项目中发现一个ASIHttpRequest的Bug.这个Bug可能会导致你Http请求延时至少在timeout设置时间结束之后.更可怕的是,为了找 ...
- 理解CSS视觉格式化
前面的话 CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...
- 彻底理解AC多模式匹配算法
(本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...
- 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信
接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...
随机推荐
- 图解TCP、IP笔记
七层:应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 应用层:与通信无关的功能 表示层:例如转换编码格式 会话层:采用哪种连接方法 传输层以下: 传输层:确立连接与断开连接重发 网络层:从 ...
- MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CON ...
- Android锁屏后数据改变的解决方案
如果一个界面设置成横屏,那么锁屏再开启之后,会重新执行一遍onCreate()方法.对于这个问题的解决方案如下: 只需要在Menifest文件的activity相应标签下添加这行代码即可: andro ...
- mysql安装配置
MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言. MySQL由于其体积小.速度快 ...
- codevs2777 栅栏的木料
题目描述 Description 农民John准备建一个栅栏来围住他的牧场.他已经确定了栅栏的形状,但是他在木料方面有些问题.当地的杂货储存商扔给John一些木板,而John必须从这些木板中找出尽可能 ...
- ubuntu下建立NFS共享,并用开发板挂载
安装NFS服务 apt-get install nfs-kernel-server nfs-common apt-get install portmap 在/etc/exports里加入 /home/ ...
- 用Bitbucket搭建博客初探
本博客是搭建在GitHub上的静态博客,但是由于GitHub免费账户不能创建私有仓库,导致有些东西不想放在GitHub上. 前两天,在免费资源部落上发现了Bitbucket,它和GitHub类似,也是 ...
- Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...
- 【Maven】解决缺少Jar包问题
解决办法:进入项目的根目录(即 pom.xml文件所在的目录)执行:mvn dependency:copy-dependencies完成后进入eclipse,发现项目不再报错前提条件:1,安装了mav ...
- Servlet 之 GenericServlet
我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的 是可以继承 Servlet接口,或者集成GenericServlet .Http ...