紧接上一篇:
IOS网络篇8之Socket收发图片(基于CFSocket NSStream)
ASIHTTPRequest是一个非常强大的第三方网络请求框架,目前超过60%的应用都是使用的这个框架,以前没有ARC版本的,后来网上的大神陆续更新之后可以支持ARC了。
下面从以下几个部分学习:
同步请求、
异步请求、
异步请求Block、
异步请求cache缓存机制、
断点续传、
进度监控
(1)同步请求
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
[request setRequestMethod:@"GET"];
[request setTimeOutSeconds:60];
//发送同步请求
[request startSynchronous];
NSData *data = request.responseData;注意这里是按照顺序执行的,程序既然能执行到这一步说明程序已经将数据请求回来了。
(2)异步请求
request.delegate = self;
//发送异步请求
[request startAsynchronous];
//请求数据完成
- (void)requestFinished:(ASIHTTPRequest *)request {
NSData *data = request.responseData;
}
(3)异步请求Block[request setCompletionBlock:^{
NSLog(@"%@",request.responseHeaders);
}
(4)断点续传
//------------------------断点续传-----------------------
//设置是否支持断点续传
[request setAllowResumeForFileDownloads:YES];
NSString *tempPath = [NSHomeDirectory()stringByAppendingPathComponent:@"tmp/cache.download"];
//设置下载过程中暂存的文件路径
[request setTemporaryFileDownloadPath:tempPath];
[request startAsynchronous];
(5)监控下载进度首先创建一个UIProgressView
//设置文件下载存放的路径
[request setDownloadDestinationPath:path];
//设置进度条
request.downloadProgressDelegate = progressView;
(6)解析Http头[request setHeadersReceivedBlock:^(NSDictionary *responseHeaders){
//获取下载文件大小
NSNumber *contentSize = [responseHeadersobjectForKey:@"Content-Length"];
}];