RequestQueue 请求队列

本文介绍了如何使用操作队列(NSOperationQueue)和ASIHTTPQueue来管理网络请求,特别是控制请求的并发数量,以实现有顺序的请求执行。通过设置最大并行操作数,可以确保请求按指定数量并发进行,例如将队列的最大并行数量设置为2,以避免大量请求同时发送。

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

操作队列

   如果有多个请求的话,可以把请求放到一个队列里,如果有请求顺序要求的话,可以设置每次请求的最大并行数量

一、系统的操作队列

/*

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://api.douban.com/v2/book/search?q=harry&apikey=00862fc9947075ac01928f5cbd516104"]];

    //操作队列

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    //最大并行数量  两个两个发起请求

    queue.maxConcurrentOperationCount = 2;

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

       //data

    }];

 */


二、ASI的操作队列

    ASINetworkQueue *asiQueue = [[ASINetworkQueue alloc] init];

    asiQueue.maxConcurrentOperationCount = 2;

    for (int i = 0; i < 10; i++) {

      ASIHTTPRequest *asiRequest = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"https://api.douban.com/v2/book/search?q=harry&apikey=00862fc9947075ac01928f5cbd516104"]];

        asiRequest.tag = i;

        asiRequest.delegate = self;

        //把请求添加到队列里

        [asiQueue addOperation:asiRequest];

    }

    [asiQueue go];

    

    ASIFormDataRequest *postRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://api.douban.com/v2/book/search"]];

    /*

     要传的参数

    //标准参数

    //q=harry

    //apikey=00862fc9947075ac01928f5cbd516104

     image=图片

     */

    [postRequest setPostValue:@"harry" forKey:@"q"];

    [postRequest setPostValue:@"00862fc9947075ac01928f5cbd516104" forKey:@"apikey”];


    //不是标准的参数  文件/数据  参数

    [postRequest setFile:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"png"] withFileName:@"1.png" andContentType:@"image/png" forKey:@"image];


    //data

    //[postRequest setData:<#(id)#> withFileName:<#(NSString *)#> andContentType:<#(NSString *)#> forKey:<#(NSString *)#>];

    

    //ASIFormDataRequest *asiRequest2;

 

}


-(void)requestFailed:(ASIHTTPRequest *)request

{

    

}


-(void)requestFinished:(ASIHTTPRequest *)request

{

    NSLog(@"%d",request.tag);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值