iOS包AFNetworking With queue

时间:2015-11-17 08:22:10

标签: ios objective-c afnetworking-2 nsoperationqueue

我想打包AFNetworking,以便网址可以逐个请求,但不知道如何打包它。 例如,有三个url请求想要发送到服务器,我希望首先通过AFNetworking发送一个url请求,当第一个请求完成时,然后将下一个请求发送到服务器,依此类推。  我认为可能需要NSOperationQueue来完成这项工作,但我不知道如何实现它。  有人写过这样的代码吗?你能给我.h和.m文件给我,这样我就可以建模或直接使用,非常感谢。

1 个答案:

答案 0 :(得分:1)

如果要发送图像或诸如此类的数据,您可能需要这样的东西。如果您只是发送简单请求,那么只需使用事实AFNetworking GET / POST而不是multipartFormRequestWithMethod

简而言之,为每个请求创建一个操作,并将每个请求添加到一个数组中。然后使用batchOfRequestOperations执行每个操作。 (From the docs)。

NSMutableArray *mutableOperations = [NSMutableArray array];
for (NSURL *fileURL in filesToUpload) {
    NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];
    }];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    [mutableOperations addObject:operation];
}

NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:mutableOperations progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
    NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);
} completionBlock:^(NSArray *operations) {
    NSLog(@"All operations in batch complete");
}];
[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];