实例:请求队列
我们通过一个例子介绍一下请求队列使用,我们设计了一个应用,用户点击GO按钮从服务器同时下载两张图片显示在画面中。
我们直接看看主视图控制器ViewController.h代码如下:
#import “ASIHTTPRequest.h” #import “ASINetworkQueue.h” #import “NSNumber+Message.h” #import “NSString+URLEncoding.h” @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIImageView *imageView1; @property (weak, nonatomic) IBOutlet UIImageView *imageView2; @property (strong) ASINetworkQueue *networkQueue; - (IBAction)onClick:(id)sender; @end
我 们需要引入ASI框架的两个头文件ASIHTTPRequest.h和ASINetworkQueue.h。其中imageView1和 imageView2是与画面对应的两个图片视图控件。还定义了ASINetworkQueue 类型的networkQueue属性。我们直接看看主视图控制器ViewController.m中点击GO按钮调用方法,代码如下:
- (IBAction)onClick:(id)sender { if (!_networkQueue) { _networkQueue = [[ASINetworkQueue alloc] init]; ① } // 停止以前的队列 [_networkQueue cancelAllOperations]; ② // 创建ASI队列 [_networkQueue setDelegate:self]; [_networkQueue setRequestDidFinishSelector:@selector(requestFinished:)]; ③ [_networkQueue setRequestDidFailSelector:@selector(requestFailed:)]; ④ [_networkQueue setQueueDidFinishSelector:@selector(queueFinished:)]; ⑤ for (int i=1; i<3; i++) { NSString *strURL = [[NSString alloc] initWithFormat: @”http://iosbook3/download.php?email=%@&FileName=test%i.jpg”, @”<你的iosbook1.com用户邮箱>”,i]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; request.tag = i; ⑥ [_networkQueue addOperation:request]; ⑦ } [_networkQueue go]; ⑧ }
我们再看看它们的回调方法,代码:
- (void)requestFinished:(ASIHTTPRequest *)request { NSData *data = [request responseData]; NSError *eror; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&eror]; if (!resDict) { UIImage *img = [UIImage imageWithData:data]; if (request.tag ==1) { ① _imageView1.image = img; } else { _imageView2.image = img; } } else { NSNumber *resultCodeObj = [resDict objectForKey:@"ResultCode"]; NSString *errorStr = [resultCodeObj errorMessage]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@”错误信息” message:errorStr delegate:nil cancelButtonTitle:@”OK” otherButtonTitles: nil]; [alertView show]; } if ([_networkQueue requestsCount] == 0) { ② [self setNetworkQueue:nil]; } NSLog(@”请求成功”); } - (void)requestFailed:(ASIHTTPRequest *)request ③ { NSError *error = [request error]; NSLog(@”%@”,[error localizedDescription]); if ([_networkQueue requestsCount] == 0) { [self setNetworkQueue:nil]; } NSLog(@”请求失败”); } - (void)queueFinished:(ASIHTTPRequest *)request ④ { if ([_networkQueue requestsCount] == 0) { [self setNetworkQueue:nil]; } NSLog(@”队列完成”); }
requestFinished: 方法是请求对象成功回调方法,因此有两个请求对象它会被调用两次,在第①行代码中我们根据GO按钮点击事件设定的 请求对象的tag属性,来判断是哪个请求对象的回调。进而加载到显示不同的图片视图。第②代码[_networkQueue requestsCount]可以判断队列中请求对象的个数。
相关推荐
IOS应用源码之【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.rar
前两年IOS应用源码-主要是用于毕业设计学习的。
【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究...
本篇文章主要介绍了iOS - ASIHTTPRequest 网络请求 ,详细的介绍了 ASIHTTPRequest的使用,具有一定的参考价值,有兴趣的可以了解一下。
【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.7z
1.改良版的 ASIHTTPRequest 不建议iOS 新手使用 2.有一定的iOS经验你会发现这个版本挺不错的! 谨慎使用,派别之争的 就别喷了无意义!
iOS ASIHttpRequest 请求https
ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 它适用于执行基本的HTTP请求和互动(或者说是反馈)。...
ASIHttpRequest是iOS开发必备的网络数据请求包,使用方便,唯一的缺点是非ARC的,需要设置项目中的非ARC类
使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 API,外号 “HTTP终结者”,用 Objective-C 编写,运行效率很高...
ios开发框架 ASIHttpRequest 资源来源于网上 非原创
ASIHTTPRequest网络请求集合,直接引入到项目中使用。
│ ├── Request:网络请求 │ ├── Models:数据模型 │ ├── View:界面,xib或者storyboard之类的文件 │ ├── Supporting Files:一些支持文件 │ └── Controllers │ ├─...
ASI-HTTP-Request是通过CFNetwork API访问Web服务的一个开源封装类库包,...ASIHTTPRequest使用REST格式与Web服务进行通信,既支持基本的Http请求格式,也通过ASIFormDataRequest类可以很方便地提交POST数据和文件。
ASIHTTPRequest 类库 ASIHTTPRequest功能很强大,主要特色如下: 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 下载的数据,可存储到内存中或直接存储到磁盘中 能上传本地文件到服务端 可以...
使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用...
利用ASIHttpRequest实现客户端向服务器端请求登陆验证的示例 博客参考:http://blog.csdn.net/dingxiaowei2013/article/details/12617203
iOS 网络异步假期 AsiHttPRequest的应用
全称是ASIHTTPRequest,外号“HTTP终结者”,可以实现http网络请求,功能十分强大。