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

ASIHTTPRequest 一款强大的HTTP包装开源项目

2012-06-13 12:42 344 查看
ASIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。

特色功能如下:

1,下载的数据直接保存到内存或文件系统里

2,提供直接提交(HTTP POST)文件的API

3,可以直接访问与修改HTTP请求与响应HEADER

4,轻松获取上传与下载的进度信息

5,异步请求与队列,自动管理上传与下载队列管理机

6,认证与授权的支持

7,Cookie

8,请求与响应的GZIP

9,代理请求

下面来两个小例子:

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request start];

NSError *error = [request error];

if (!error) {

    NSString *response = [request responseString];

}

当你需要添加更多的请求信息时,如,添加个请求Header:

[request addRequestHeader:@"name" value:@"Jory lee"];

添加Post请求时的健值:

[request setPostValue:@"Ben" forKey:@"first_name"];

[request setPostValue:@"Copsey" forKey:@"last_name"];

[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];

设置HTTP的授权帐号:

[request setUsername:@"username"];

[request setPassword:@"password"];

一个异步请求:

- (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

{

// Use when fetching text data

NSString *responseString = [request responseString];

// Use when fetching binary data

NSData *responseData = [request responseData];

}

- (void)requestFailed:(ASIHTTPRequest *)request

{

NSError *error = [request error];

}   

在我们数据获取的过程中,如果数据源复杂,一个请求队列是必不可少的:

- (IBAction)grabURLInTheBackground:(id)sender

{

if (![self queue]) {

[self setQueue:[[[NSOperationQueue alloc] init] autorelease]];

}

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request setDelegate:self];

[request setDidFinishSelector:@selector(requestDone:)];

[request setDidFailSelector:@selector(requestWentWrong:)];

[[self queue] addOperation:request]; //queue is an NSOperationQueue

}

- (void)requestDone:(ASIHTTPRequest *)request

{

NSString *response = [request responseString];

}

- (void)requestWentWrong:(ASIHTTPRequest *)request

{

NSError *error = [request error];

}   


SIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。

一、介绍

特色功能如下:

1.下载的数据直接保存到内存或文件系统里

2.提供直接提交(HTTP POST)文件的API

3.可以直接访问与修改HTTP请求与响应HEADER

4.轻松获取上传与下载的进度信息

5.异步请求与队列,自动管理上传与下载队列管理机

6.认证与授权的支持

7.Cookie

8.请求与响应的GZIP

9.代理请求

ASIHTTPRequest -Main classes介绍:

1.ASIHTTPRequest:处理与服务器的基本交互,包括下载上传,认证,cookies以及进度查看。

2.ASIFormDataRequest:是ASIHTTPRequest子类,主要处理post事件,它能使post更加简单。

3.ASINetworkQueue:是NSOperationQueue子类,当处理多个请求时可以使用,如果每次都是单个请求就不必使用。

4.ASIDownloadCache:该类允许ASIHTTPRequest从服务器传递cookie。

ASIHTTPRequest -Support classes介绍:

1.ASIInputStream:当使用ASIHTTPRequest上传数据时使用,如果工程中用了ASIHTTPRequest,就一定要include这个类。

2.ASIAuthenticationDialog:该类允许ASIHTTPRequest连接到服务器时呈现登录框。在所有iPhone OS工程中都要使用,Mac OS工程中可以不用。

3.Reachability:相信很多人对这个类已经很熟悉了,当在你程序中侦测网络状态时它将非常有用。

ASIHTTPRequest -Protocols and configuration介绍:

1.ASIHTTPRequestDelegate:该协议指定了ASIHTTPRequest的delegate可能需要实现的方法,所有方法都是optional。

2.ASIProgressDelegate:该协议列出了uploadProgressDelegate和downloadProgressDelegate可能需要实现的方法,所有方法为optional。

3.ASICacheDelegate:该协议指定了download cache必须实现的方法。如果你要写你自己的download cache,确保实现required方法。

4.ASIHTTPRequestConfig.h:该文件定义了编译时所有的全局配置选项。使用该文件中的方法可以在控制台中输出request正在进行的任务.

http://115.com/file/c2die6ik 例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息