ios - 通过异步调用自动重新登录

标签 ios objective-c asynchronous network-programming

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

10 分钟后, session token 过期,服务器拒绝向调用 B 返回数据。在这种情况下,我们必须再次调用 A 来重新进行身份验证并获取可用于调用 B 的新的有效 session token .

我面临的问题是我想自动化此操作,但我不知道如何通过简洁的设计来实现它。我想以这种方式实现它,如果调用 B 从服务器接收到“ session 已过期”,它将启动异步调用 A 并使用调用 A 提供的新 session token 重新启动自身。 Objective-C 和 iOS 框架提供的工具?

最佳答案

如果您使用类似 AFNetworking 的内容,您将创建一个 AFHttpClient 的子类,它知道如何执行这两个操作。在 callB 的实现中,检查是否从服务器获得无效的 session 响应并手动调用 A,然后在其完成委托(delegate)中再次调用 B。

对于在手动重新进行身份验证后调用 callB,您可能需要捕获 callB 的参数 - 如果它只是几条数据、局部变量会工作得很好。如果这变得笨拙,您可能会在运行时和 record the NSInvocation 上变得棘手。初始 callB 并稍后再次执行;基本上,您的 callB 方法将被调配/代理以检查 session 是否有效。

关于ios - 通过异步调用自动重新登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464852/

相关文章:

iphone - 增强现实 iOS : marker detection and 3D projection

ios - 为什么 TableView 委托(delegate)方法没有被调用?

iphone - 如果移动,UIImageView 将缩放而不是旋转,iOS

ios - Mailcore 检索文件夹和撰写功能

javascript - child_process.exec 与外部 EXE 文件同步

iOS 9 应用程序链接无法按预期使用 URL 缩短

ios - 与 Silveright 和 iPad 客户端一起使用的推荐绑定(bind)是什么

objective-c - 测试多线程

javascript - 在 doc : It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened. 上执行写入

c# - 同步到异步 - 使同步异步的最佳实践