您的位置:首页 > 理论基础 > 计算机网络

ASIHTTPRequest

2011-12-11 22:42 85 查看
一、如何使用ASIHTTPRequest

1、什么时ASIHTTPRequest

ASIHTTPRequest是对CFNetwork API的一个封装,使与web服务器的通信变得简单。它比较适合执行基本的HTTP请求,以及与基于REST(GET/POST/PUT/DELETE)的服务进行交互。其ASIFormDataRequest子类使得使用multipart/form-data提交POST数据和文件更加容易。

功能:

一个直接向web服务器提交数据或从web服务器获取数据的接口;
将数据下载到内存或直接下载到磁盘上的一个文件中;
将本地磁盘上的文件作为POST数据的一部分提交,兼容HTML文件输入机制;
便于访问HTTP请求和响应头;
进程委托(NSProgressIndicators和UIProgressView)显示关于下载和上传进度信息;
对操作队列上传和下载进程标识符的自动管理;
支持Basic、Digest和NTLM认证机制,在会话持续时间内自动维持,并可在其后存入Keychain;
支持cookie;
当app进入后台运行时,请求可以继续执行(iOS 4+);
对响应数据和请求体的GZIP支持;
ASIDownloadCache类可以让请求透明地缓存响应,即使在没有网络可用时也能成功缓存数据请求;
ASIWebPageRequest-下载完整的webpages,包括诸如图片和样式表等外部资源。任何大小的页面都可以无限期缓存,即使在没有网络可用的情况下也通过UIWebview/WebView查看;
对Amazon S3提供支持-无需在签名请求上反复折腾;
完全支持Rackspace云文件,这是由Rackspace的Mike Mayo作出的贡献;
支持客户端认证;
支持手工和自动检测代理、认证代理、PAC文件自动配置:内建的登录会话框可以使iPhone应用程序与认证代理透明交互,无需其他工作;
支持带宽管理;
支持持久连接;
支持同步/异步请求;
通过委托或块(Mac OS 10.6, iOS 4及以上)获取关于请求状态的改变通知;
大范围单元测试。
ASIHTTPRequest带有Mac和iPhone的应用实例程序,验证了上述某些功能,同时它部分基于了苹果的ImageClient代码,所以如果它不能满足你的需要,可以看一下CFNetwork的例子。
ASIHTTPRequest兼容Mac OS 10.5及以上版本,iOS 4及以上版本。

2、类说明

(1)主要类

ASIHTTPRequest

处理与web服务器的基本通信,包括下载和上传数据、认证、cookies和进度跟踪。

ASIFormDataRequest

ASIHTTPRequest的一个子类,处理x-www-form-urlencoded和multipart/form-data请求。便于POSTing数据和文件,但如果你希望自己处理POST数据或者根本不需要POST数据,那么就不要将类加到工程中。

ASINetworkQueue

是NSOperationQueue的一个子类,可以跨多个请求跟踪进度。如果你仅需要在某个时刻执行一个请求,或希望单独跟踪每个请求的进度,那么你就不需要使用这个类。

ASIDownloadCache

该类使ASIHTTPRequest透明地缓存来自web服务器的响应。当远程数据因为最后下载而未更新,网络可用时,或者当缓存数据可用时,请求可以配置用于缓存的内容。如果你不希望使用缓存,或者有自己的缓存,就不要包含该类。

(2)支撑类

这些类通常不需要直接使用,其意义次于上述主要类。

ASIInputStream

是ASIHTTPRequest在上传数据时用到的一个助手类。如果使用了ASIHTTPReaquest,那么就要在工程中包含给类。

ASIDataDecompressor

是ASIHTTPRequest在解压数据时用到的一个助手类。如果使用了ASIHTTPReaquest,那么就要在工程中包含给类。

ASIDataCompressor

是ASIHTTPRequest在压缩数据时用到的一个助手类。如果使用了ASIHTTPReaquest,那么就要在工程中包含给类。

ASIAutenticationDialog

该类使ASIHTTPRequest在连接到一个需要认证的服务器以及认证代理时弹出登录对话框,他是所有iPhone OS项目都必须的,Mac OS不包括在内。

Reachability

该类由Andrew Donoho开发,是苹果Reachability类的替代。其功能是在网络连接由WWAN改变为WiFi,或相反时通知ASIHTTPRequest。在iPhone工程中必须包含此类,Mac则不必。你会发现该类对检测网络可用状态非常有用。

(3)协议和配置

必须在你的工程中包含所有下述文件。

ASIHTTPRequestDelegate

该协议指定了ASIHTTPRequest的委托可能实现的方法。所有这些方法都是可选的。

ASIProgressDelegate

该协议列举了uploadProgressDelegate或downloadProgressDelegate可能实现的方法。所有这些方法都是可选的。

ASICacheDelegate

该协议用于指明下载缓存必须实现的方法。如果你希望编写自己的现在缓存,确保它实现了本协议所需要的方法。

ASIHTTPRequestConfig.h

该文件定义了在编译时设置的全局配置选项。使用该文件中的选项来开启各种调试打印到console的选项。不要忘记在应用程序时关闭这些选项。

二、如何在iOS工程中使用ASIHTTPRequest

1、添加文件

复制所需文件到你的工程文件夹,并将它们添加到你的Xcode工程。如果你不确定需要那些文件,最好复制下述所有文件:

ASIHTTPRequestConfig.h

ASIHTTPRequestDelegate.h

ASIProgressDelegate.h

ASICacheDelegate.h

ASIHTTPRequest.h

ASIHTTPRequest.m

ASIDataCompressor.h

ASIDataCompressor.m

ASIDataDecompressor.h

ASIDataDecompressor.m

ASIFormDataRequest.h

ASIInputStream.h

ASIInputStream.m

ASIFormDataRequest.m

ASINetworkQueue.h

ASINetworkQueue.m

ASIDownloadCache.h

ASIDownloadCache.m
iPhone工程还要包括:

ASIAuthenticationDialog.h

ASIAuthenticationDialog.m

Reachability.h (in the External/Reachability folder)

Reachability.m (in the External/Reachability folder)
2、链接CFNetwork、SystemConfiguration、MobileCoreServices、CoreGraphics和zlib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息