`
liubo0_0
  • 浏览: 21822 次
社区版块
存档分类
最新评论

强大的HTTP包装开源项目ASIHTTPRequest介绍

 
阅读更多

转自:http://www.cocoachina.com/iphonedev/sdk/2010/1011/2159.htm

1,下载的数据直接保存到内存或文件系统里
2,提供直接提交(HTTP POST)文件的API
3,可以直接访问与修改HTTP请求与响应HEADER
4,轻松获取上传与下载的进度信息
5,异步请求与队列,自动管理上传与下载队列管理机
6,认证与授权的支持
7,Cookie
8,请求与响应的GZIP
9,代理请求

下面来两个ASIHTTPRequest的小例子:

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];
}

另外大家可以通过下面这个代码例子,看 ASIHTTP 比传统的 post 方法的方便之处

post用法
NSString *post = @"这里放要传递的参数";
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"请求地址"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
//[request addValue:@"gzip" forHTTPHeaderField:@"Accepts-Encoding"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];

if (conn)
{
receivedbData = [[NSMutableData data] retain];
}
else
{
// inform the user that the download could not be made
}

ASIHTTP 方法

NSURL *url = [NSURL URLWithString:@"请求地址"];
//ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"值" forKey:@"参数1"];
[request setPostValue:@"值" forKey:@"参数2"];

[request start];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
NSLog(response);
}

相比之下,ASIHTTP 的确省了很多代码。更多信息请访问官方网站http://allseeing-i.com/


分享到:
评论

相关推荐

    【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.7z

    【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.7z

    IOS应用源码之【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.rar

    ASIHTTPRequest 是一个强大的 iOS 应用程序开发中的 HTTP 请求库,它为 Objective-C 开发者提供了简单易用的接口来处理网络请求。这个开源项目在 iOS 社区中备受推崇,因为它大大简化了与服务器进行数据交换的过程。...

    【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载

    【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究...

    IOS应用源码之【应用】ASIHTTPRequest-强大的HTTP包装开源项目.rar

    ASIHTTPRequest 是一个强大的 iOS 应用开发中使用的 HTTP 请求库,它为Objective-C开发者提供了简单易用的接口来处理网络请求。这个开源项目是许多iOS应用程序的基础,因为它简化了网络通信,使得开发者能够快速实现...

    IOS应用源码Demo-ASIHTTPRequest-强大的HTTP包装开源项目-毕设学习.zip

    前两年IOS应用源码-主要是用于毕业设计学习的。

    ASIHttpRequest

    总的来说,ASIHTTPRequest提供了一套强大而易用的工具,用于处理iOS应用中的HTTP网络请求。尽管Apple在其后续的Swift和更新的Objective-C版本中推荐使用NSURLSession替代,但ASIHTTPRequest在许多旧项目中仍然发挥着...

    ASIHTTPRequest

    - ASIHTTPRequest虽功能强大,但项目已停止维护,推荐使用更现代的替代方案,如AFNetworking或Alamofire。 - 在处理大量请求时,注意内存管理和线程安全。 - 对于HTTPS请求,需要正确配置证书以确保安全性。 总...

    ASIHTTPRequest使用介绍

    ASIHTTPRequest 是一个基于苹果的 CFNetwork 框架开发的开源网络库,它为 iOS 和 Mac OS X 平台提供了简单而强大的 HTTP 请求处理。这个库由 Ben Copsey 创建,旨在简化网络通信任务,尤其在处理异步请求、队列管理...

    asihttprequest带demo代码包

    在“asihttprequest带demo代码包”中,你将找到一个示例项目,它可以帮助你理解和使用 ASIHTTPRequest 库。 1. **请求发起**: - ASIHTTPRequest 支持 GET、POST、PUT、DELETE 等多种 HTTP 方法。 - 可以通过 `-...

    HTTP访问开源项目asi-http-request.zip

    ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目,能够让简单的 API 完成非常复杂的功能,比如异步请求、队列请求、GZIP 压缩、缓存、断点续传、进度跟踪、上传文件、HTTP 认证。

    ASIHttpRequest ios开发框架

    在解压的asi-http-request-master文件中,包含了ASIHttpRequest库的源代码、示例项目、文档等内容。开发者可以通过阅读源码来了解其实现原理,也可以直接将库导入到自己的项目中使用。不过,由于ASIHttpRequest已...

    ASIHTTPRequest框架

    ASIHTTPRequest框架的核心功能在于简化HTTP请求的创建和管理,提供了一种直观且强大的方式来发起GET、POST、PUT、DELETE等HTTP请求。它支持异步和同步请求,可以处理文件上传和下载,同时具备进度跟踪、缓存策略、...

    ASIHTTPRequest网络API

    总之,ASIHTTPRequest为iOS和Mac OS X开发者提供了一个强大的工具,简化了HTTP请求的处理。虽然现在有更现代的替代品,如Alamofire和URLSession,但ASIHTTPRequest的历史地位和其丰富的功能仍然值得我们学习和借鉴。

    ASIHTTPRequest 源码

    ASIHTTPRequest 是一个Objective-C编写的网络请求库,广泛应用于iOS和Mac OS X开发中,它为开发者提供了简单易用的接口来发起HTTP请求。这个源码包包含了ASIHTTPRequest库的完整源代码,对于深入理解网络请求处理...

    iOS的HTTP开发包ASIHTTPRequest

    ASI-HTTP-Request是通过CFNetwork API访问Web服务的一个开源封装类库包,使用Objective-C编写,非常易用,可以应用于iPhone和Mac OS X应用程序。 ASIHTTPRequest使用REST格式与Web服务进行通信,既支持基本的Http...

    Http 开源包

    《ASIHTTPRequest:深入理解HTTP开源库》 在IT行业中,HTTP协议是互联网上应用最广泛的数据传输协议之一,用于客户端和服务器之间的通信。而ASIHTTPRequest是Objective-C编程语言中一个著名的HTTP请求库,它为iOS和...

Global site tag (gtag.js) - Google Analytics