ASIHTTPRequest学习 (一)
来源:互联网 发布:mp3合并软件 编辑:程序博客网 时间:2024/05/20 04:47
ASIHTTPRequest框架是优秀的第三方Objective-C的HTTP框架,支持Mac OS X和iOS下的HTTP开发。
一、ASIHTTPRequest框架的安装和配置
(1)首先要在项目工程中导入相关的文件,包括:ASIHttpRequest文件夹和Reachability文件夹。
(2)要导入相关的支持类库和框架。包括:
CFNetwork.framework
SystemConfiguration.framework
MobileCoreServices.framework
libz.dylib
(3)由于ASIHTTPRequest是不支持ARC的,所以在添加了ARC特性的项目中就会出现ARC报错,解决的方法也很简单,对ASIHTTPRequest的相关文件添加ARC特性,做法就是在target中选择Build Phases,再选择compile sources中ASIHTTPRequest的文件,双击弹出对话框,添加参数“-fno-objc-arc”。问题解决。
二、同步请求
首先需要导入ASIHTTPRequest头文件。
NSString *urlString = @"*****"; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]]; [request startSynchronous]; NSError *error = [request error]; if (!error) { NSData *data = [request responseData]; NSString *string = [request responseString]; }
这是一段简单的同步请求的代码。其中的responseData返回的是二进制数据,而responseString返回的是文本数据。
三、异步请求
附注:我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好。因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用。异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的很多。等待过程中在状态栏上会出现网络等待指示器的经典旋 转小图标,而使用ASIHTTPRequest异步请求就实现这些效果,不用自己额外编写代码。
异步请求需要实现代理方法
NSString *urlString = @"*****"; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]]; [request setDelegate:self]; [request startAsynchronous];
需要实现两个代理方法:
- (void)requestFinished:(ASIHTTPRequest *)request { NSData *data = [request responseData]; NSString *string = [request responseString];}- (void)requestFailed:(ASIHTTPRequest *)request { NSError *error = [request error]; if (error) { NSLog(@"request failed"); }}
[request setDidFinishSelector:@selector(requestSuccess:)]; [request setDidFailSelector:@selector(requestError:)];
然后再实现这两个自定义的回调方法。
- (void)requestSuccess:(ASIHTTPRequest *)request { NSData *data = [request responseData]; NSString *string = [request responseString];}- (void)requestError:(ASIHTTPRequest *)request { NSError *error = [request error]; if (error) { NSLog(@"request failed"); }}
在异步请求中往往为了代码更加简洁可以使用代码块(block),在代码块中指定回调方法。
NSString *urlString = @"*****"; __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]]; [request setCompletionBlock:^{ // Use when fetching text data NSString *responseString = [request responseString]; // Use when fetching binary data NSData *responseData = [request responseData]; }]; [request setFailedBlock:^{ NSError *error = [request error]; if (error) { NSLog(@"request failed"); } }]; [request startAsynchronous];
四、请求队列
- ASIHTTPRequest学习 (一)
- ASIHTTPRequest官方文档(一)
- ASIHTTPRequest详解 【经典】(一)
- ASIHTTPRequest官方文档(一)
- IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)
- HTTP操作之ASIHTTPRequest(一)
- iOS 开发之ASIHttpRequest(一)
- iOS开发ASIHttpRequest介绍(一)-- ASIHttpRequest创建和执行request
- ios的ASIHTTPRequest学习
- ASIHTTPRequest学习笔记
- ASIHttpRequest学习笔记
- IOS:ASIHttpRequest学习1
- IOS:ASIHttpRequest学习2
- IOS学习:常用第三方库(ASIHttpRequest)
- iPhone 开发 之 ASIHTTPRequest (一)
- ASIHTTPRequest系列(一):文件上传
- ios学习之(x)--ASIHTTPRequest
- iOS的ASIHTTPRequest学习(1)
- opencv学习之一
- MakeFile基本语法和使用GDB调试多源文件程序
- 使用HTML 5打造高效的Web应用程序
- 集合框架—泛型
- OpenGL入门学习
- ASIHTTPRequest学习 (一)
- S3C2440 linux 2.6.32.2 ADC HWMON驱动移植
- Web Audio API常见问答
- LruCache 结合 FIFO 策略实现bitmap缓存
- 寻找最大数——解题报告
- 著名成功人士的人生理念
- javafx.scene.Node
- 关于python 的re.sub用法
- 在WebKit引擎的浏览器中实现CSS滤镜特效