使用RestKit同时调用两个Web服务

时间:2014-06-23 12:32:52

标签: ios objective-c web-services restkit

您好我第一次使用Restkit并且能够正确调用Web服务但是有一种情况我必须在我的一个viewcontroller上调用两个webservices来获取服务器所需的所有数据 例如:我有一个服务提供userProfile数据,第二个我必须调用userLevelType

现在我正在调用第一个webservices,当我得到那些数据时,它给了我useprofile我叫第二个webservices userLevelType但是我想一次调用这两个服务

有没有办法一次调用两个不同的Web服务。

我正在使用RKobjectRequestOperation来调用webservices,因此可以创建一个我不知道的队列或其他解决方案

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您正在处理的异步系统正在攻击基于网络的资源。 "同时"实际上是不可能的。

RestKit会按照您提供的顺序排队请求。

如果您的请求是顺序依赖的,您需要通过完成块将它们链接在一起。

RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

        [self runNextRequestWhichIsDependantOnDataFromThisRequest];

    };

RequestOperationFailBlock failureblock = ^(RKObjectRequestOperation *operation,  NSError *error){

        //deal with failure

    };


[[RKObjectManager sharedManager] getObjectsAtPath:@"my/path" parameters:someParams success:successblock failure:failureblock];

如果它们不依赖,请在两个成功块中使用条件来继续前进。

RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

        if(theOtherOperationHasCompleted) {

           [self carryOnWithFlowNowThatBothOperationsAreDone];
        }

    };

答案 1 :(得分:0)

使用对象管理器控制您处理的请求操作。使用enqueueObjectRequestOperation:将处理传递给对象管理器。访问对象管理器的operationQueue,以便您可以调用setMaxConcurrentOperationCount:来限制正在运行的并发进程数(您在任何时候都不应该超过4或5)。< / p>