ASIHttpRequest 使用
2015-08-06 16:56
393 查看
导入第三方框架ASIHttpRequest
添加类库SystemConfiguration.framework, MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib这几个类库。
2.1.2使用说明
ASIHTTPRequest有很多功能,所有功能说明都可以在其官方网站的相关文档中查到,本章仅简单介绍一下如何使用ASIHTTPRequest来进行同步Http请求和异步Http请求。在后面的章节中,我们还会用到它的一些其他功能。
在使用ASIHTTPRequest之前,请确认已经正确安装,然后在需要应用它的代码文件头部,加入:
#import “ASIHTTPRequest.h”
这样就可以在代码中使用ASIHTTPRequest相关的类。
创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。
要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,例如图片、MP3,则调用responseData方法,可以得到一个NSData对象。
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}
一般情况下,应该优先使用异步请求代替同步请求,当在主线程中使用ASIHTTPRequest同步请求,应用程序的界面会锁定,无法进行任何操作,直到请求完成。
创建一个异步请求
上例中的同步请求,如果换成异步方式来调用,请求是在后台线程中运行,当请求执行完后再通知调用的线程。这样不会导致主线程进行网络请求时,界面被锁定等情况。
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// 当以文本形式读取返回内容时用这个方法
NSString *responseString = [request responseString];
// 当以二进制形式读取返回内容时用这个方法
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
添加类库SystemConfiguration.framework, MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib这几个类库。
2.1.2使用说明
ASIHTTPRequest有很多功能,所有功能说明都可以在其官方网站的相关文档中查到,本章仅简单介绍一下如何使用ASIHTTPRequest来进行同步Http请求和异步Http请求。在后面的章节中,我们还会用到它的一些其他功能。
在使用ASIHTTPRequest之前,请确认已经正确安装,然后在需要应用它的代码文件头部,加入:
#import “ASIHTTPRequest.h”
这样就可以在代码中使用ASIHTTPRequest相关的类。
创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。
要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,例如图片、MP3,则调用responseData方法,可以得到一个NSData对象。
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}
一般情况下,应该优先使用异步请求代替同步请求,当在主线程中使用ASIHTTPRequest同步请求,应用程序的界面会锁定,无法进行任何操作,直到请求完成。
创建一个异步请求
上例中的同步请求,如果换成异步方式来调用,请求是在后台线程中运行,当请求执行完后再通知调用的线程。这样不会导致主线程进行网络请求时,界面被锁定等情况。
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// 当以文本形式读取返回内容时用这个方法
NSString *responseString = [request responseString];
// 当以二进制形式读取返回内容时用这个方法
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
相关文章推荐
- Android面HTTP协议发送get要求
- 【python网络编程】利用select实现socket全双工异步通信
- Android网络请求工具类
- 欢迎使用CSDN-markdown编辑器
- HTTP协议详解
- 怎样使用NetFlow分析网络异常流量一
- Linux IO多路复用之epoll网络编程(含源码)
- 请求网络数据的url中带有汉字的解决办法
- HTTP与HTTPS的区别
- [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors
- TCP中的RST复位信号
- http协议分析
- HttpClient
- HTTP Basic Authentication in JMeter
- 网络协议 之 邮件协议
- 在网络通讯中应用Protobuf
- 【linux高级程序设计】(第十五章)UDP网络编程应用 3
- 黑马程序员——java高新技术——网络编程
- 【Apache学习】编译安装httpd2.4 含傻瓜版自动安装脚本
- CDN(内容分发网络)技术原理