Objective-C AFnetworking:停止请求

Posted

技术标签:

【中文标题】Objective-C AFnetworking:停止请求【英文标题】:Objective-C AFnetworking: stopping a request 【发布时间】:2016-11-15 20:09:50 【问题描述】:

晚上,我正在使用 Marvel-API,尝试下载所有角色。

要下载所有字符,您必须执行多个请求,在每个请求中您可以指定限制和偏移量。

所以我将限制设置为最大值 100,并且对于每个请求,我都会将偏移量增加 100。

这样做,我做了无限的请求。当然。

所以我认为当从 JSON 对象中检索到的“结果”数组为空时,我应该停止。

所以逻辑应该是好的,我不断请求字符 100 x 100 直到没有更多可检索。

当然,使用网络和异步代码并不总是那么容易。显然我有货。

我确定问题出在这些代码行中:

#pragma mark - Requesting data
-(void)getData 
   NetworkManager *networkManager = [NetworkManager alloc];


    while(self.requestMustEnd == false) 
        NSLog(@"offset: %d", networkManager.offset);

        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        [manager GET:networkManager.getUrlPath parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) 
            NSLog(@"JSON: %@", responseObject);
            [self parseResponseData:responseObject];
         failure:^(NSURLSessionTask *operation, NSError *error) 
            NSLog(@"Error: %@", error);
        ];

        [networkManager increaseOffset];
    




#pragma mark - Parsing Method

-(void)parseResponseData:(NSDictionary *)responseDictionary 
    NSArray *marvelArray = [[responseDictionary objectForKey:@"data"] objectForKey:@"results"];
    if (marvelArray.count == 0) 
        self.requestMustEnd = true;
    
    for(NSDictionary* marvel in marvelArray)
    
        Character *currentMarvelEntity = [[Character alloc] initWithMarvel:marvel];
        //NSLog(@"currentMarvelEntity %@", currentMarvelEntity.name);
        [self.marvelCharacters addObject:currentMarvelEntity];
    
    [self.tableView reloadData];

停止请求的关键部分是:

if (marvelArray.count == 0) 
        self.requestMustEnd = true;
    

但是,请求永远不会结束。我敢肯定,这不是 if 条件。但可能是因为,有一个异步代码,getData func 无论如何都会继续请求数据。

有什么建议吗?

【问题讨论】:

【参考方案1】:

这个post 可能会有所帮助。试试:

[manager.operationQueue cancelAllOperations];

【讨论】:

以上是关于Objective-C AFnetworking:停止请求的主要内容,如果未能解决你的问题,请参考以下文章

objective-c 如何使用 AFNetworking 使用 NSURLSession

在 Objective-c 中使用 AFNetworking 对字典进行 URL 编码

如何使用 AFNetworking 3.x 在 ios、objective-C 中使用来自 SOAP webservice 的数据

AFNetworking JSON 到 UITableView - Objective-C

Objective-C AFnetworking:停止请求

如何在 iOS Objective-C 中使用 AFNetworking 库下载 .json 文件?