ASIHTTPRequest续1

本文详细介绍了如何使用ASIHTTPRequest库解析HTTP响应头部信息,并通过代码示例展示了如何获取文件长度、计算下载进度并展示在进度条上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做项目的时候经常要知道http请求回来的文件的一些信息,这些信息通常在responseHeaders中,它是个NSDictionary类型的。

把它的内容打印出来看看http头文件都是什么,要在ASIHTTPRequest返回头儿的代理方法中进行。

//先收到头儿,然后收到数据。
-(void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders{
    NSLog(@"%@",[responseHeaders description]);
}
运行,打印出来的结果是这样的:

ASIHTTPRequest_04[2696:f803] {
    Connection = "Keep-Alive";
    "Content-Encoding" = gzip;
    "Content-Length" = 10665;
    "Content-Type" = "text/html; charset=UTF-8";
    Date = "Tue, 28 Aug 2012 02:42:52 GMT";
    "Keep-Alive" = "timeout=2, max=100";
    Server = "Apache/2.2.8 (Ubuntu) mod_ssl/2.2.22 OpenSSL/1.0.1 PHP/5.3.13";
    Vary = "Accept-Encoding,User-Agent";
    "X-Pingback" = "http://allseeing-i.com/Ping-Back";
    "X-Powered-By" = "PHP/5.3.13";
}

我们就可以通过这些来确定我们想要的信息在NSDictionary中的key。

如,我们需要知道接收的文件的长度,可以调用Content-Length的内容,下面是求进度的例子:

//先收到头儿,然后收到数据。
-(void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders{
    NSString *contentLength = [[request responseHeaders] objectForKey:@"Content-Length"];
    totalLength = [contentLength intValue];
}

//请求的数据是分批收到的,所以这个方法被连续调用
-(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data{
    receivedLength = receivedLength + [data length];
    NSLog(@"已经接收到了百分之%d",receivedLength * 100 / totalLength );
}

通过记录每次接收到的数据到receiveLength中,记录接收到的数据长度,除以在头文件中得到的总长度totalLenth,可以得到进度。

ASIHTTPRequest给我们提供了一个简单的图形化进度的方法,支持UIProgressView

[request setDownloadProgressDelegate:myProgressView];
上面的myProgressView是UIProgressView类型的。上面一行代码就可以在进度条中显示下载的进度了。


只学习了基本的用法,ASIHTTPRequest还支持:

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

等用到的时候可以取官网查看: ASIHTTPRequest 官方网站地址:http://allseeing-i.com/ 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值