我有两次对服务器的异步调用。呼叫A对用户进行身份验证并返回会话令牌。呼叫B从服务器获取数据。呼叫B需要来自呼叫A的会话令牌,以便服务器接受请求并返回数据。
10分钟后,会话令牌过期,服务器拒绝返回数据以呼叫B.在这种情况下,我们必须再次调用A重新进行身份验证并获取一个新的有效会话令牌,我们可以将其用于呼叫B
我面临的问题是我想自动化这个问题,我不知道如何用干净的设计来实现它。我想以这种方式实现它,如果调用B从服务器收到“会话过期”,它将启动异步调用A并使用从调用A提供的新会话令牌重新启动自身。这样的事情可能与Objective-C和iOS框架提供的工具?
答案 0 :(得分:1)
如果您正在使用类似AFNetworking的内容,则可以创建AFHttpClient的子类,该子类知道如何执行这两个操作。在callB的实现中,检查是否从服务器获得了无效的会话响应并手动调用A,然后再次在其完成委托callB中。
要在手动重新验证后调用callB
,您可能希望将参数捕获到callB
- 如果它只是几个数据,则局部变量可以正常工作。如果这变得笨拙,你可能会对你的初始callB
的运行时和record the NSInvocation感到棘手,并在以后再次执行它;基本上你的callB
方法会被调整/代理以检查会话是否有效。