RestKit:重新认证后如何重新提交失败的请求?

Posted

技术标签:

【中文标题】RestKit:重新认证后如何重新提交失败的请求?【英文标题】:RestKit: How to resubmit failed request after re-authenticating? 【发布时间】:2013-01-04 09:50:39 【问题描述】:

我正在开发的 API 要求我在自定义 HTTP 标头中提供身份验证令牌。此令牌每隔几分钟就会过期,并且可能在用户仍在应用程序内时发生,只要他们空闲时间足够长。当令牌过期时,我会收到 403 响应,但我只有在尝试请求后才发现。

让 RestKit 自动重新验证并重试请求的最佳方法是什么,这样我就不必在我提出请求的任何地方都输入这个逻辑?对类似问题的回答建议使用 RKRequestDelegate 协议或 RKObjectLoaderDelegate 协议,但不幸的是,这些不再是 RestKit 的一部分(从 0.20 开始)。

知道现在“正确”的方法应该是什么吗?我应该继承 RKObjectManager 并对每个请求操作进行重试,还是应该提供自定义 HTTPOperation 或 HTTPClient 类,或者是否有更好的方法?谢谢!

【问题讨论】:

【参考方案1】:

在Failure block中捕获,检查状态码并重新认证

    RKObjectRequestOperation *requestOp = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[getObjResp]];

            [requestOp setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
                ....
                
             failure:^(RKObjectRequestOperation *operation, NSError *error)
// Here your status code check                
// Here your retry-code
                

【讨论】:

在不知道请求细节的情况下如何进行重试?

以上是关于RestKit:重新认证后如何重新提交失败的请求?的主要内容,如果未能解决你的问题,请参考以下文章

bug篇——idea拉取代码认证失败重新登录

使用sourceTree向码云提交代码时 push 错误 (或认证失败)解决办法

python登录时间过长重新登录

总是网络请求失败是啥原因?

如何在 RESTkit 0.2 中设置缓存策略

如何重新发送失败的xmlHttpRequest