`

iPhone开发之ASIHTTPRequest

    博客分类:
  • ios
 
阅读更多

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

  ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。它的特色功能如下:
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/

出处:http://www.cocoachina.com/iphonedev/sdk/2010/1011/2159.html

分享到:
评论

相关推荐

    IPhone使用ASIHTTPRequest调用WebService

    本主题将深入探讨如何利用ASIHTTPRequest库来调用WebService,并进行封装,以便在iPhone应用中更高效地使用。 首先,了解ASIHTTPRequest库。它是一个强大的Objective-C库,提供了简单易用的接口,用于发起HTTP请求...

    iOS的HTTP开发包ASIHTTPRequest

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

    ASIHTTPRequest使用介绍

    不过,需要注意的是,由于ASIHTTPRequest的开发已经停止,对于新项目,开发者可能会考虑使用更现代的网络库,如Alamofire或NSURLSession。但在维护旧项目或对ASIHTTPRequest有深度依赖的情况下,这个库依然非常实用...

    ASIHTTPRequest

    ASIHTTPRequest 是一个面向 iOS 开发者的 HTTP 请求库,它为 Objective-C 编程语言提供了简单易用的接口,便于在 iPhone、iPad 或其他基于 iOS 的设备上进行网络数据的发送和接收。这个库由 Sam Soffes 开发,并在 ...

    ASIHTTPRequest Source

    在描述中提到的 "iphone ASIHTTPRequest 开源工具包" 是指 ASIHTTPRequest 已经被封装成了一个适用于 iOS 开发的库,开发者可以方便地集成到自己的项目中,通过调用其提供的 API 来发起 HTTP 请求,如 GET、POST、...

    ASIHttpRequest库API的介绍和使用

    ASIHttpRequest库是专门为iPhone开发设计的一个高效且功能丰富的HTTP网络访问库。它由Core Service开发而成,支持多种HTTP相关的功能,比如同步/异步数据下载、表单提交、文件上传等,并且能够很好地处理诸如Cookie...

    在iphone开发中ASI的下载data的方法

    本文将深入探讨ASIHttpRequest库的使用方法,以及如何利用它在iPhone应用中实现数据的下载。 首先,ASIHttpRequest库是由Sam Soffes开发的,它提供了异步和同步两种方式来发起HTTP请求,支持GET、POST、PUT、DELETE...

    ASIHttpRequest 库中文手册

    ASIHttpRequest库是一款用于iOS应用开发中的HTTP请求处理工具,它为开发者提供了简单易用的API来实现HTTP请求相关的功能。该库支持多种HTTP请求方式,包括但不限于同步与异步请求、表单提交、文件上传、处理Cookie等...

    iOS常用第三方类库 - CocoaChina 苹果开发中文站 - 最热的iPhone开发社区 最热的苹果开发社区 最热的iPa

    `ASIHTTPRequest`是一个网络请求库,支持异步请求;`EGORefreshTableHeaderView`提供下拉刷新功能;`AsyncImageView`实现了图片的异步加载,避免阻塞主线程;`setting`库则帮助开发者创建自定义设置界面。 4. 数据...

    iPhone 3开发基础教程源码.rar

    《iPhone 3开发基础教程源码》是一份针对初学者的iOS应用开发资源,主要基于Apple的SDK 3.0版本。这份教程源码旨在帮助开发者深入理解iPhone应用程序的构建过程,通过实际代码来学习iOS编程的核心概念。在这个压缩包...

    ASIHTTPRequest使用指南中文版

    这种方式适用于小规模数据的快速获取,但在实际开发中应避免在UI线程上使用同步请求,以防止用户界面冻结。 **示例代码:** ```objective-c -(IBAction)grabURL:(id)sender { NSURL *url = [NSURL URLWithString:@...

    Iphone团购信息客户端

    《Iphone团购信息客户端:KissXML、ASIHttpRequest与AQGridView的应用详解》 在iOS开发领域,构建一款高效且功能完善的iPhone团购信息客户端是一项技术挑战。本项目巧妙地结合了KissXML、ASIHttpRequest和...

    企业级IOS应用开发

    - **Objective-C与跨平台开发:** Objective-C是iOS开发的主要编程语言之一,但在跨平台应用开发时,其与其他语言之间的互操作性较弱,这给开发者带来了一定难度。 - **代码覆盖率评估:** 代码覆盖率是衡量测试充分...

    《iOS6开发指南》精彩书摘

    6. **iPhone与iPad应用开发的差异**:介绍了iPad专用API,并用nib和故事板技术分别实现iPhone和iPad的程序模板。 7. **应用程序的设置**:解释了设置和配置的区别,以及如何决定项目内容应该放在设置里还是配置里。...

    杂志App整体解决方案.ppt

    - 下载管理:使用ASIHTTPRequest库(iOS)和Android-async-http库(Android)实现高效下载,包括异步请求、GZIP压缩、缓存、断点续传等功能。 5. 缓存机制: - 本地缓存:保存访问过的数据和下载内容,减少服务器...

    ios面试简历

    * iOS5 的新特性:Storyboard、ARC 内存管理、iPhone5 屏幕适配 * iOS 系统的事件捕捉与传递机制:事件响应者链 * iOS 常用类库:AVFoundation、MediaPlayer 多媒体类库、CoreLocation、MapKit、Core Animation 等 *...

    ASI学习DEMO

    ASIHTTPRequest是iOS开发中一款经典的网络请求库,主要用于处理HTTP请求。这个"ASI学习DEMO"是一个示例项目,旨在帮助开发者了解并掌握如何在实际应用中使用ASIHTTPRequest库。以下将详细介绍ASIHTTPRequest的主要...

    一步一步iOS5编程第三版

    这本书旨在帮助读者掌握苹果公司的移动操作系统上的编程技能,无论是对iOS设备(如iPhone、iPad)的硬件特性,还是对iOS SDK和Xcode开发环境的熟悉,都能通过此书得到全面的理解。 书中首先从安装Xcode和iOS SDK...

    ios面试要求

    20. **适配不同屏幕尺寸**:能为不同iPhone/iPad型号进行适配,确保应用在各设备上的良好显示。 21. **App Store上架流程**:熟悉苹果的审核规则,能顺利进行App的发布和更新。 22. **音视频多媒体开发**:对于...

Global site tag (gtag.js) - Google Analytics