0

我有两个对服务器的异步调用。调用 A 对用户进行身份验证并返回会话令牌。调用 B 从服务器获取数据。调用 B 需要调用 A 的会话令牌,以便服务器接受请求并返回数据。

10 分钟后会话令牌过期,服务器拒绝向调用 B 返回数据。在这种情况下,我们必须再次调用 A 以重新验证并获取可用于调用 B 的新的有效会话令牌。

我面临的问题是我想自动化这个并且我不知道如何用一个干净的设计来实现它。我想以这种方式实现它,如果调用 B 从服务器接收到“会话已过期”,它将启动异步调用 A 并使用调用 A 提供的新会话令牌重新启动自身。这样的事情可能与Objective-C 和 iOS 框架提供的工具?

4

1 回答 1

1

如果您使用类似AFNetworking的东西,您将创建一个知道如何执行这两种操作的 AFHttpClient 的子类。在 callB 的实现中,检查您是否从服务器获得了无效的会话响应并手动 callA,然后再次在其完成委托 callB 中。

对于手动重新验证后的调用callB,您可能希望将参数捕获到callB- 如果它只是几条数据,则局部变量可以正常工作。如果这变得笨拙,您可能会在运行时变得棘手并记录您初始的 NSInvocationcallB并稍后再次执行它;基本上,您的callB方法将被调配/代理以检查会话是否有效。

于 2013-10-19T13:23:24.473 回答