如何使用RestKit自动处理令牌刷新

Sas*_*a_K 5 objective-c ios restkit restkit-0.20

我有一个你可以想象的项目就像Facebook应用程序,我很难掌握如何使用RestKit组织它并处理令牌,因为我是一名RestKit初学者.

这是我到目前为止所得到的:

  • 核心数据NSManagedObject类,对于每个类我添加了一个名为REST的类,它具有提供RKObjectMapping和RKRouteSet的功能
  • 自定义RKObjectManager子类,用于处理设置标头,MIME类型,设置授权标头和Core Data存储
  • RKObjectRequestOperation子类

如果您有组织建议拍摄,但我的主要问题是如何在收到401 HTTP状态代码并使用新令牌再次触发失败的请求后实现自动令牌刷新?

我开始重写我的RKObjectRequestOperation子类中的metod:

- (void)setCompletionBlockWithSuccess:(void ( ^ ) ( RKObjectRequestOperation *operation , RKMappingResult *mappingResult ))success failure:(void ( ^ ) ( RKObjectRequestOperation *operation , NSError *error ))failure

所以现在我可以拦截401响应,但是现在我必须再次调用刷新令牌,然后用新令牌重新排队失败的操作,请告知如何执行此操作.

Wai*_*ain 3

RKObjectRequestOperation如果您使用对象管理器,我通常不会使用自定义。我会在对象管理器级别处理它。

在对象管理器中,您可以覆盖每个主要请求方法(提供成功和失败块)。您可以实现这些方法来调用super,但用新版本替换成功和失败块,这会在调用提供的版本之前添加一些逻辑。

现在,附加逻辑是检查响应状态。如果它显示需要刷新令牌,则可以对其进行操作,然后对象管理器可以使用第一个请求中提供的参数触发新的加载。

另外,您不应该重新排队操作,除非文档声明它受支持,因为某些操作在第二次执行时将无法工作...