前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASIHTTPRequest 一款强大的HTTP包装开源项目

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

作者头像
EltonZheng
发布2021-01-26 11:13:21
4000
发布2021-01-26 11:13:21
举报

ASIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。 特色功能如下: 1,下载的数据直接保存到内存或文件系统里 2,提供直接提交(HTTP POST)文件的API 3,可以直接访问与修改HTTP请求与响应HEADER 4,轻松获取上传与下载的进度信息 5,异步请求与队列,自动管理上传与下载队列管理机 6,认证与授权的支持 7,Cookie 8,请求与响应的GZIP 9,代理请求

下面来两个小例子:

代码语言:javascript
复制
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:

代码语言:javascript
复制
[request addRequestHeader:@"name" value:@"Jory lee"];

添加Post请求时的健值:

代码语言:javascript
复制
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];

设置HTTP的授权帐号:

代码语言:javascript
复制
[request setUsername:@"username"];
[request setPassword:@"password"];

一个异步请求:

代码语言:javascript
复制
- (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];
}   

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

代码语言:javascript
复制
- (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];
}   

援引自:http://www.cocoachina.com/bbs/read.php?tid-9455.html


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档