ios开发 ASIHTTPRequest类库

ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。它的特色功能如下:
1,下载的数据直接保存到内存或文件系统里
2,提供直接提交(HTTP POST)文件的API
3,可以直接访问与修改HTTP请求与响应HEADER
4,轻松获取上传与下载的进度信息
5,异步请求与队列,自动管理上传与下载队列管理机
6,认证与授权的支持
7,Cookie
8,请求与响应的GZIP
9,代理请求

1, 添加ASIHTTPRequest相关文件到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   ASIAuthenticationDialog.h   ASIAuthenticationDialog.m   Reachability.h (在源码的 External/Reachability 目录下)    Reachability.m (在源码的 External/Reachability 目录下)
2,添加类库CFNetwork.framework   SystemConfiguration.framework,   MobileCoreServices.framework, libz.1.2.5.dylib这几个类库
3,导入头文件  #import “ASIHTTPRequest.h”

创建一个同步请求
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同步请求,应用程序的界面会锁定,无法进行任何操作,直到请求完成。
创建一个异步请求
 
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];
}


如果程序启动了ARC,需要对文件设置-fno-objc-arc
 

ARC 是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编 译器完成了。该机制在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。

那么在xCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。我们该如何处理这些问题呢:

查看ARC 是否开启,"Objective-C Automatic Reference Counting"选项为YES,表示开启。

点击项目导航文件--> 选中Targets--> 选择 Build Phases --> 展开Compile Sources

技术分享

这个时候,我们看到第二列的名称为:Compiler Flags

双击你所要使用ARC的文件,并输入 -fobjc-arc,

技术分享

技术分享

那么现在这个文件就可以在编译时使用ARC机制进行编译了。

同上,如果想让使用ARC机制的代码不使用ARC机制,只需要输入 -fno-objc-arc

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。