ASIHTTPRequest类库简介和使用说明
2011-11-19 16:03
801 查看
使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。
ASIHTTPRequest功能非常强大,主要特色如下:
通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作。
下载的数据,可存储到内存中或直接存储到磁盘中。
能上传本地文件到服务端。
可以方便的访问和操作请求和返回的HTTP头信息。
可以获取到上传或下载的进度信息,为应用程序提供更好的体验。
支持上传或下载队列,并且可获取队列的进度信息。
支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)。
支持Cookie
当应用(iOS 4+)在后台运行时,请求可以继续运行。
支持GZIP压缩数据。
内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回缓存的数据结果。
ASIWebPageRequest——可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView/WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览。
支持客户端证书
支持通过代理发起HTTP请求
支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制。
支持断点续传
支持同步和异步请求
在项目中简单配置即可使用ASIHTTPRequest:
可以通过以下两种方式往一个Xcode项目中添加第三方类库文件:
1. 拖放到项目中。如果类库文件没有拷贝到项目文件目录,则拷贝时要选中”Copy items into destination group's folder“的复选框。
2. 在Xcode中,右键点击项目文件弹出菜单中选择”Add Files to XXX Project“菜单,在文件浏览对话框中选择要添加的文件到项目中。同样地,如果类库文件没有拷贝到项目文件目录,则拷贝时要选中”Copy items into destination group's folder“的复选框。
根据这两种方式之一,添加ASIHTTPRequest相关文件到Xcode项目中。然后进行链接类库的操作,这一步很重要:
1. 选择项目
2. 选择目标Target
3. 跳转到”Build Phases“标签项
4. 展开”Link Binary With Libraries“分组
5. 点击”+“添加类库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/9f2b5ce66534503881b1164f869d3a4d.gif)
6. 从列表中选择CFNetwork.framework,然后点击”Add“按钮。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/ddd01673474798fa2d89330f827d5542.gif)
7. 按照上一步方法添加:SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib这几个类库。
8. 添加完后,可以将添加好的类库拖到Xcode项目的Frameworks目录下。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/2478f67cfcbe3951af2beb631272ec93.gif)
使用说明:
在完成上述正确安装配置后,在需要用到ASIHTTPRequest的代码文件头部,引入:
#import "ASIHTTPRequest.h"这句即可使用它的相关类。
示例:创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。 要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,如图片、MP3,则调用responseData方法,可以得到一个NSData对象。代码如下:
一般情况下,应该优先使用异步请求来代替同步请求,当在主线程中使用ASIHTTPRequest同步请求,应用程序的界面会锁定,无法进行任何操作,直到请求完成。
示例:创建一个异步请求
异步请求是在后台线程中运行,当请求执行完后再通知调用的线程。这样不会导致主线程进行网络请求时,界面被锁定等情况。
关于Xcode4.2下编译”ASIHTTPRequest“开源项目的代码时,出现”Declaration of ’struct sockaddr_in' will not be visible outside of this function“错误的解决方法:
引入头文件:#import <netinet/in.h>
ASIHTTPRequest功能非常强大,主要特色如下:
通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作。
下载的数据,可存储到内存中或直接存储到磁盘中。
能上传本地文件到服务端。
可以方便的访问和操作请求和返回的HTTP头信息。
可以获取到上传或下载的进度信息,为应用程序提供更好的体验。
支持上传或下载队列,并且可获取队列的进度信息。
支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)。
支持Cookie
当应用(iOS 4+)在后台运行时,请求可以继续运行。
支持GZIP压缩数据。
内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回缓存的数据结果。
ASIWebPageRequest——可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView/WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览。
支持客户端证书
支持通过代理发起HTTP请求
支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制。
支持断点续传
支持同步和异步请求
在项目中简单配置即可使用ASIHTTPRequest:
可以通过以下两种方式往一个Xcode项目中添加第三方类库文件:
1. 拖放到项目中。如果类库文件没有拷贝到项目文件目录,则拷贝时要选中”Copy items into destination group's folder“的复选框。
2. 在Xcode中,右键点击项目文件弹出菜单中选择”Add Files to XXX Project“菜单,在文件浏览对话框中选择要添加的文件到项目中。同样地,如果类库文件没有拷贝到项目文件目录,则拷贝时要选中”Copy items into destination group's folder“的复选框。
根据这两种方式之一,添加ASIHTTPRequest相关文件到Xcode项目中。然后进行链接类库的操作,这一步很重要:
1. 选择项目
2. 选择目标Target
3. 跳转到”Build Phases“标签项
4. 展开”Link Binary With Libraries“分组
5. 点击”+“添加类库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/9f2b5ce66534503881b1164f869d3a4d.gif)
6. 从列表中选择CFNetwork.framework,然后点击”Add“按钮。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/ddd01673474798fa2d89330f827d5542.gif)
7. 按照上一步方法添加:SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib这几个类库。
8. 添加完后,可以将添加好的类库拖到Xcode项目的Frameworks目录下。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201111/2478f67cfcbe3951af2beb631272ec93.gif)
使用说明:
在完成上述正确安装配置后,在需要用到ASIHTTPRequest的代码文件头部,引入:
#import "ASIHTTPRequest.h"这句即可使用它的相关类。
示例:创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。 要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,如图片、MP3,则调用responseData方法,可以得到一个NSData对象。代码如下:
- (IBAction)grabURL:(id)sender { NSURL *url = [NSURL URLWithString:@"http://www.cnblogs.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://www.cnblogs.com"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDelegate:self]; [request startAsynchronous]; } - (void)requestFinished:(ASIHTTPRequest *)request { //当以文本形式读取返回内容时用这个方法 NSString *responseString = [request responseString]; //当以二进制形式读取返回内容时用这个方法 NSData *responseDate = [request responseData]; } - (void)requestFailed:(ASIHTTPRequest *)request { NSError *error = [request error]; }
关于Xcode4.2下编译”ASIHTTPRequest“开源项目的代码时,出现”Declaration of ’struct sockaddr_in' will not be visible outside of this function“错误的解决方法:
引入头文件:#import <netinet/in.h>
相关文章推荐
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- iphone 开发开放库-ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明(转)
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- IOS ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- iOS 的 ASIHTTPRequest 类库简介和使用说明
- iOS开发-ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- ASIHTTPRequest类库简介和使用说明
- [转载]ASIHTTPRequest类库简介和使用说明