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)主要类
(2)支撑类
这些类通常不需要直接使用,其意义次于上述主要类。
(3)协议和配置
必须在你的工程中包含所有下述文件。
二、如何在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
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
相关文章推荐
- iOS网络编程--ASIHTTPRequest框架安装和配置-图文解说
- ASIHTTPRequest 详解
- iOS 多张图片上传demo(用ASIHTTPRequest 框架实现)
- ARC ASIHttpRequest block时出错circle retain的问题及解决方法
- iOS网络编程-ASIHTTPRequest框架同步请求 推荐
- ASIHTTPRequest with Cookie
- iOS网络编程-ASIHTTPRequest异步请求
- 利用ASIHttpRequest框架进行网络数据请求(一)—— 利用get请求数据
- iOS网络编程-ASIHTTPRequest异步请求
- ASIHTTPRequest处理收到的服务器响应数据
- ASIHTTPRequest 断点续传
- ASIHTTPRequest详解 [经典]
- ios中的ASIHTTPRequest的同步请求和异步请求
- ASIHTTPRequest 一款强大的HTTP包装开源项目
- ASIHTTPRequest用户登陆:重复用户登陆问题解决
- ASIHTTPRequest取消异步请求
- iPhone 开发 之 ASIHTTPRequest (二)
- iOS ASIHttpRequest 和 AFNetWorking 实时监测下载进度
- ASIHTTPRequest-直接读取磁盘数据流的请求体
- IOS 学习笔记 —— ASIHTTPRequest 之 ASIFormDataRequest