ASIHTTPReques

ASIHTTPRequest是什么?

ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。

它适用于执行基本的HTTP请求和互动(或者说是反馈)。ASIFormDataRequest子类可以简单的实现提交数据和文件。使用multipart/form-data

提供了以下:

一个从web服务器提交和获取数据的接口

直接下载数据到内存或者本地文件系统里

能够从本地提交文件,作为post数据的一部分。兼容HTML file input mechanism

可以访问和修改http请求和响应header

获得上传下载的进度信息

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

cookie 支持

请求和响应的gzip支持

代理请求


ASIHTTPRequest设置

在iphone 项目中使用ASIHTTPRequest

1、添加一些必要的文件,复制以下文件到项目中去

ASIHTTPRquestConfig.h

ASInputStream.h

ASInputStream.m

ASIHTTPRequest.h

ASIHTTPRequest.h

ASINSStringAdditions.h

ASINSStringAdditions.m

ASIFormDataRequest.h

ASIFormDataRequest.m

ASINetworkQueue.h

ASINetworkQueue.m

iphone项目还必须包含以下文件

ASIAuthenticationDialog.h

ASIAuthenticationDialog.m

一个版本的Reachability类


添加必要的框架到项目中去

CFNetwork.framework

SystemConfiguration.framework

libz.1.2.3.dylib


配置Reachability

在iphone上,ASIHTTPRequest使用Apple的Reachability类。

Reachability有两个版本,他们都能在ASIHTTPRequest发行文件的Reachability文件夹中找到。

2.0版本是最新的办迸。如果你的项目是基于iphone os 3.x和更新的系统,你应该使用2.0版本的。包括.h和.m文件。保证在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值为1

1.5是个老版本,它和iphone os 2.2.1-iphone os 3.0兼容。保证在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值为0


在mac ox x项目中使用AHIHTTPRequest

为了在Mac os x项目中使用ASIHTTPRequest,你需要导入以下:

SystemConfiguration.framework + zlib

CoreService.framework

在Mac OS X上,CFNetwork 是CoreServices框架的一部分。除非你写的是基于控制台的应用程序。


How to use

create asynchronous request

添加一个同步request

这是使用ASIHTTPRequest最简单的方法。发送一个startSynchronous消息。将在同一个进程中执行请求,在完成之后释放控制。

通过error属性来察看问题。

使用responseString可以得到string类型的response信息。

responseData方法用来获取一个NSData对象,或者更大的文件。不要使用这个方法来获取二进制的数据。

DownloadDestinationPath方法用来设置request,来下载到一个文件中。


 

-(IBAction)grabURL:(id)sender

{

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

ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];

[requeststartSynchronous];

NSError*error=[requesterror];

if(!error){

NSString*response=[requestresponseString];

}

}

 


 

注意:一般来说,使用异步请求优先于同步请求。当你从main进程中使用同步的ASIHTTPRequest。你的应用程序界面将会被锁住,并且,在这期间不能使用。

同步request只是用于没有界面的应用程序,例如终端。或者你运行在一个单独的进程中,并且你对它进行维护。

Creatingan asynchronous request

创建一个异步request

示例代码看起来干着同样的事情(或者理解为代码开起来是一样的),但是,request是在后台运行的


-(IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURLURLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
[requestsetDelegate:self];
[requeststartAsynchronous];
}  - (void)requestFinished:(ASIHTTPRequest *)request
{
// Usewhen fetching text data NSString *responseString = [request responseString];
  // Use when fetchingbinary data NSData *responseData = [request responseData];
}
  -(void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}

 

 


 



注意,我们为request设置委托,这样,我们就可以接收消息,无论request完成了还是失败了。

这是一个最简单的创建一个异步的request的方法,并且,它会运行在当前进程里。对于更 复杂的情况,你可能想创建一个队列,我们可以覆盖下一个(youmight want to create your own queue, which is what we’ll covernext.这里翻译的非常勉强….英语差啊…);

Using aqueue

使用一个队列

这个示例依然是做同样的事情,但是,我们将为我们的request添加一个NSOperationQueue对象。

使用NSOperationQueue(或ASINetWorkQueue,见下面示例)将 给你对异步request更多的控制。当使用队列的时候,只有确定数量的request可以同时运行。如果你添加的request超过了队列的 maxConcurrentOperationCount属性,request将在其他request运行完了之后运行。


-(IBAction)grabURLInTheBackground:(id)sender
{
if (![self queue]) {
[selfsetQueue:[[[NSOperationQueuealloc] init] autorelease]];
}

NSURL *url = [NSURLURLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
[requestsetDelegate:self];
[requestsetDidFinishSelector:@selector(requestDone:)];
[requestsetDidFailSelector:@selector(requestWentWrong:)];
[[self queue] addOperation:request]; //queue is anNSOperationQueue
}
- (void)requestDone:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
}
 
- (void)requestWentWrong:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}

 

 


 



ASIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。
ASIHTTPRequest 官方网站地址: http://allseeing-i.com/   
一、介绍
特色功能如下:
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正在进行的任务,Don't forget to turn these off in shipping applications!(这句啥意思?...?时候要关闭?)
二、安装:
http://allseeing-i.com/ASIHTTPRequest/Setup-instructions    网站上已经很详细了,拷贝类文件(如果不清楚用哪个就全拷)->添加frameworks->OK
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值