我使用reskit来comsume webservice 我有以下代码:
第一行:从Web服务获取令牌
tokenID = [self getTokenID];
第二行从同一个Web服务获取JSON
[self sendRequest:tokenID];
但是当执行程序时......令牌ID还没有为第二行做好准备...... 然后我得到401错误(未经授权)
是否可以同步这两种方法? 例如:
当“getTokenID”方法完成后,执行第二个方法“sendRequest:tokenID”
此致
答案 0 :(得分:1)
我认为您在getTokenID中使用异步调用 当我查看Restkit的文档时,您的代码中应该有这样的内容:
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
** CODE TO EXECUTE AFTER THE REQUEST IS FINISHED **
} failure:nil];
在完成块中,您可以从结果中获取令牌并执行
[self sendRequest:tokenID];
很抱歉我很模糊,但我需要在getTokenID中看到你的代码,以便给你一个更好的答案。
答案 1 :(得分:0)
我认为[self getTokenID]
不会进行网络服务调用。我认为你没有展示的其他代码正在执行请求。执行请求时,它可以是异步的。在这种情况下,当你想要它时,它可能还没有准备好。
所以我的建议是:查找正在执行请求的代码,并找到一种方法来挂钩,以便在请求完成时得到通知。它可以是代表或块的形式。