`
woodn_z
  • 浏览: 44770 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

ASIHTTPRequest

阅读更多
ASIHTTPRequest 一款强大的HTTP包装开源项目
ASIHTTPRequest是什么?

官方地址:http://allseeing-i.com/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框架的一部分。除非你写的是基于控制台的应用程序

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];
}  
分享到:
评论

相关推荐

    ASIHttpRequest

    - 初始化请求:创建一个ASIHTTPRequest对象,然后指定URL,例如`ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];` - 设置请求参数:可以使用`-[ASIHTTPRequest setPostValue:forKey:]`方法添加...

    ASIHTTPRequest+UITableView实现多个下载任务

    本项目使用了ASIHTTPRequest库与UITableView相结合来实现这一功能。ASIHTTPRequest是一个广泛使用的HTTP请求库,它提供了简单易用的API,使得网络请求操作变得相对简单。而UITableView则是iOS中用于展示列表数据的...

    asihttprequest带demo代码包

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

    ASIHttpRequest ios开发框架

    ASIHttpRequest是iOS应用开发中的一款流行网络请求库,由Alexsander Ivanov开发。这个框架在Objective-C语言环境下,为iOS开发者提供了简单易用的API,用于执行HTTP请求,包括GET、POST、PUT、DELETE等多种HTTP方法...

    ASIHTTPRequest断点续传

    在这个特定的主题中,我们关注的是"ASIHTTPRequest实现资源的下载,断点续传"。断点续传是一项重要的下载技术,尤其在处理大文件或网络不稳定时,它允许用户暂停下载并在稍后继续,而无需重新开始。 首先,了解断点...

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

    下面将详细介绍 ASIHTTPRequest 的核心功能、优势以及如何在实际开发中使用它。 1. **核心功能**: - 支持同步和异步请求:ASIHTTPRequest 提供了两种请求模式,可以根据需求选择是否阻塞主线程。 - 自动处理 ...

    ASIHTTPRequest网络API

    尽管现在Apple的URLSession已经成为了更推荐的选择,但理解ASIHTTPRequest的工作原理和用法仍然对学习iOS网络编程有所帮助。 首先,让我们详细了解一下ASIHTTPRequest库的核心功能和特性: 1. **异步请求**:...

    ASIHTTPRequest框架

    1. **异步与同步请求**:ASIHTTPRequest提供了异步请求的能力,允许应用程序在等待服务器响应的同时执行其他任务,提高了用户体验。同时,它也支持同步请求,适合在后台线程中使用,避免阻塞主线程。 2. **文件上传...

    ASIHTTPRequest 源码

    这个源码包包含了ASIHTTPRequest库的完整源代码,对于深入理解网络请求处理流程以及iOS/Mac应用的网络编程具有很高的学习价值。 ASIHTTPRequest的主要特点包括: 1. **异步请求处理**:ASIHTTPRequest支持异步发送...

    ASIHTTPRequest网路请求

    虽然现在已被更现代的AFNetworking等库取代,但对于学习网络请求原理和历史来说,ASIHTTPRequest仍具有一定的参考价值。 一、ASIHTTPRequest基本概念 1. 请求对象:ASIHTTPRequest是网络请求的核心对象,它封装了...

    ASIHTTPRequest使用介绍

    1. **内存或文件系统存储**:ASIHTTPRequest 支持将下载的数据直接保存到内存或文件系统中,根据需求灵活选择。 2. **文件上传API**:提供了直接提交文件(HTTP POST)的接口,简化了文件上传操作。 3. **HEADER ...

    ASIHttpRequest 下载显示有进度条的alert框

    该demo最主要的功能是在用ASIHttpRequest 下载,(当然同样也适用于上传),在弹出的alert框中显示下载(或是上传数据)的进度 在这里注意:如果是下载较大的文件,进度条会缓慢进行;相反如果下载的文件很小,那...

    IOS ASIHttpRequest资源包

    ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 它适用于执行基本的HTTP请求和互动(或者说是反馈)。...

Global site tag (gtag.js) - Google Analytics