开源库: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 使用理解的更多相关文章

  1. 深入理解RunLoop

    网上看的一篇文章,写的真好,我得多看几次好好理解理解 膜拜大神,转载至此便于学习查看. 此处标明原文链接:http://blog.ibireme.com/2015/05/18/runloop/    ...

  2. ios开发理解nil,Nil, NULL

    nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [ ...

  3. 通过回调函数的理解来进一步理解ajax及其注意的用法

    一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...

  4. ASIHTTPRequest系列(一):同步和异步请求

    ASIHTTPRequest系列(一):同步和异步请求 发表于8个月前(2013-11-27 19:21)   阅读(431) | 评论(0) 6人收藏此文章, 我要收藏 赞0 ASIHTTPRequ ...

  5. 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存

    源码:http://files.cnblogs.com/ios8/ASIHttpRequestDemo2.zip NSURL *url = [NSURLURLWithString:@"htt ...

  6. ASIHTTPRequest 问题总结

    1, ASIHttpRequest与30秒超时 今天在项目中发现一个ASIHttpRequest的Bug.这个Bug可能会导致你Http请求延时至少在timeout设置时间结束之后.更可怕的是,为了找 ...

  7. 理解CSS视觉格式化

    前面的话   CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...

  8. 彻底理解AC多模式匹配算法

    (本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...

  9. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

随机推荐

  1. linux下常见解压缩命令

    linux下常见的压缩文件格式有tar.gz.tar.gz.tar.bz2.zip等等.对于不同的压缩文件格式有对应的解压缩命令.下面就对此小结一下: 1.后缀为.tar 用 tar –xvf 解压 ...

  2. LoadRunner 函数之 web_add_cookie

    简单示例: Action() { // 添加cookie web_add_cookie("is_login=True;path=/;domain=10.1.102.75"); // ...

  3. 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码

    在一个应用的整个开发过程中涉及到了无数的步骤.其中一些是应用的说明,图片的创作,应用的实现,和实现过后的测试阶段.写代码可能组成了这个过程的绝大部分,因为正是它给了应用生命,但是这样还不够,与它同等重 ...

  4. 关于学习angularJS 的 心里路程(二)

    这一次主要的学习内容是 ng-route(本次的项目由于种种原因吧,我们采用了ui-router,而不是原生的ng-route) * 配置路由. * 注意这里采用的是ui-router这个路由,而不是 ...

  5. UGUI

    http://www.2fz1.com/post/unity-ugui-recttransform/ //this.transform.position 获取的是世界坐标,而 this.transfo ...

  6. FMDB的使用

    //1.创建数据库    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomai ...

  7. 1.0、Struts2的简单搭建方法

    一.Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet:用于jsp页面与Java代码之间的交互. 1.核心:Filter拦截器,对所有的请求进行拦截. 2.工作 ...

  8. 0、Web基本概念

    一.Web的概念: 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思. 二.Web的分类:Internet上供外界访问的Web资源分为静态Web资源和动态Web资源两种. 1.静态Web资源:W ...

  9. LYDSY模拟赛day2 Market

    /* orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足.然后,因为容量<=10^9,显然是不可能 ...

  10. 清北学堂模拟赛day7 数字碰撞

    /* clj:水题别人都满分你不是你就完了,所以说水题一定要细心一点,有这么几个细节:①前导零的处理,全是零的时候要特判②换行要注意,不要多大一行,剩下就是水水的模拟了 */ #include< ...