`

iOS网络编程-ASIHTTPRequest小例子-数据请求队列

阅读更多

实例:请求队列

我们通过一个例子介绍一下请求队列使用,我们设计了一个应用,用户点击GO按钮从服务器同时下载两张图片显示在画面中。

 7

我们直接看看主视图控制器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

    ASIHTTPRequest 是一个强大的 iOS 应用程序开发中的 HTTP 请求库,它为 Objective-C 开发者提供了简单易用的接口来处理网络请求。这个开源项目在 iOS 社区中备受推崇,因为它大大简化了与服务器进行数据交换的过程。...

    改进版 iOS 网络请求类库ASIHTTPRequest

    ASIHTTPRequest 是一个经典的 iOS 网络请求库,由 Ben Copsey 创建,它在 iOS 开发的早期阶段非常流行。虽然现在已经被更现代的库,如 Alamofire 和 URLSession 取代,但对于有一定经验的 iOS 开发者来说,理解 ...

    IOS应用源码Demo-ASIHTTPRequest-强大的HTTP包装开源项目-毕设学习.zip

    前两年IOS应用源码-主要是用于毕业设计学习的。

    【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载

    【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载【应用】★★★★★-ASIHTTPRequest-强大的HTTP包装开源项目.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合个人学习研究...

    【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.7z

    【应用】-ASIHTTPRequest-强大的HTTP包装开源项目.7z

    asihttprequest带demo代码包

    ASIHTTPRequest 是一个流行的 iOS 和 Mac OS X 平台上的 HTTP 请求库,由 Alexey Sokolov 开发。这个库提供了一种简单的方式来发起 HTTP 请求,处理响应,并且在 Objective-C 中进行网络编程时提供了很多便利。在...

    注释很详细ASIHttpRequest

    虽然ASIHttpRequest已经不再维护,但它仍然能作为学习网络编程的基础,尤其是对于那些需要理解网络请求工作流程的初学者来说,这是一个很好的起点。同时,熟悉ASIHttpRequest后,转学更现代的网络库如Alamofire或...

    iOS--ASI第三方网络请求框架

    ASIHTTPRequest是iOS开发中一个经典的第三方网络请求库,由Ben Copsey创建,它为Objective-C开发者提供了一种简单的方式来发送HTTP请求。这个框架在早期的iOS应用开发中非常流行,因为它提供了许多方便的功能,比如...

    ASIHttpRequest

    ASIHTTPRequest是iOS开发中一个广泛使用的HTTP网络请求库,它基于Apple的Core Foundation框架中的CFNetwork,为开发者提供了更简洁易用的接口。这个库由Allan Odgaard创建,旨在简化iOS和Mac OS X应用程序中的网络...

    ASIHttpRequest ios开发框架

    在iOS开发中,网络请求是必不可少的一部分,ASIHttpRequest框架通过封装底层的CFNetwork,简化了网络编程的复杂性。它提供了以下主要功能: 1. **异步请求**:ASIHttpRequest支持后台线程处理网络请求,不会阻塞...

    ASIHTTPRequest

    ASIHTTPRequest是iOS开发中一款经典的HTTP请求库,由Alex Riedler开发,它为Objective-C程序员提供了简单易用的API来处理HTTP网络请求。在移动应用开发中,数据的获取和传输是至关重要的部分,ASIHTTPRequest就是...

    ASIHTTPRequest网路请求

    2. 请求队列:ASIHTTPRequest支持请求队列管理,可以批量发送请求,并按照特定顺序或并发执行,这在处理多个网络请求时非常有用。 二、使用步骤 1. 创建请求:通过 `[ASIHTTPRequest requestWithURL:]` 创建一个...

    iOS ASIHttpRequest 请求https

    通过以上步骤,我们可以有效地利用ASIHttpRequest在iOS应用中实现HTTPS请求,并确保数据传输的安全性。在实际开发中,还应该根据具体需求调整ATS设置,以满足不同场景下的安全需求。同时,定期检查证书的有效性和...

    ASIHttpRequest网络请求工具

    ASIHttpRequest是iOS应用开发中的一款经典网络请求库,由Ben Copsey开发,它为开发者提供了简单易用的接口来执行HTTP请求。尽管该库已经不再更新,但它在很多老项目中仍然广泛使用,尤其是对于那些不支持ARC...

    ASIHttpRequest 队列下载 UITableView实现

    在iOS开发中,ASIHttpRequest是一个广泛使用的开源网络请求库,由Allan Odgaard开发,它为Objective-C提供了简单且强大的HTTP请求处理能力。本项目"ASIHttpRequest 队列下载 UITableView实现"旨在教你如何利用...

    ASIHttpRequest网络请求框架

    ASIHTTPRequest,被誉为“HTTP终结者”,是一个在Objective-C中广泛使用的网络请求库,特别适合iOS和Mac OS X应用开发。这个框架由Blake Watters和Sam Soffes共同创建,提供了全面且灵活的解决方案来处理HTTP请求,...

    iOS网络编程模型.pdf

    ASIHTTPRequest是针对iOS SDK中HTTP网络请求API的一个便捷封装库,用Objective-C编写,适合Mac OS X和iOS平台。它简化了HTTP请求的调用,支持基本的HTTP请求,与RESTful服务交互,以及上传和下载任务。...

    iOS异步队列下载

    在iOS开发中,异步队列下载是一种常见的网络数据获取技术,它允许应用程序在后台同时处理多个下载任务,提高用户体验并优化系统资源的利用。ASIHTTPRequest库是Objective-C中的一个流行选择,它提供了对HTTP请求的...

Global site tag (gtag.js) - Google Analytics