【问题标题】:Confused by AFNetworking responseObject被 AFNetworking responseObject 弄糊涂了
【发布时间】:2014-03-28 19:35:24
【问题描述】:

应该是我吧。我可能正在做一些愚蠢的事情。我对 responseObject 感到困惑,所以整理了我能想到的最简单的演示。

我想在 iOS 应用程序中使用 AFNetworking 2 登录到远程服务器以获取 authToken。 我以为一切正常。 我可以登录并获得一个 AuthToken。

但是.....如果我注销然后以其他用户身份登录,我似乎得到了第一个用户 responseObject 而不是新用户。

我录制了一段短视频来演示该问题。这会并排显示 iOS 模拟器、xCode 调试器和 Web 服务器日志文件。你可以在这里查看:https://www.dropbox.com/s/f0zjdsj2mor0cjq/wrongresponsobject.mp4

重现步骤:

  1. 使用演示应用程序以 user1 身份登录,详细信息如下
  2. 使用以下详细信息以 user2 身份再次登录

每次尝试登录时,我都可以在服务器日志中看到该请求。 正在发布带有正确电子邮件和密码的正确请求。 服务器正在返回一个 201 响应,其中包含一些响应数据,包括 authToken。

在第二次登录时处理 *response 时,使用原来的 responseObject 而不是新的来匹配新的请求。

我有一个可用的演示服务器: 域名:apitest.jserve1.com/ 登录路径:/api/v1/session.json

测试用户帐户

user1@example.com / user1password

user2@example.com / user2password

我有一个连接到这个演示服务器的演示应用程序,你可以在这里下载 https://www.dropbox.com/s/zp62sjlb13z3g6q/WrongObjectResponseExample.zip

我是否遗漏了一些明显的东西?装傻? 如果是这样,那么如果您能告诉我我做错了什么,我将非常感激。

更新 - 已解决

问题在于该应用保留了上次登录的 cookie。最后,添加以下代码为我解决了这个问题。

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress];
for (NSHTTPCookie *cookie in cookies) {
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

通过 stackoverflow.com/questions/10984374/how-to-manage-sessions-with-afnetworking

【问题讨论】:

    标签: ios afnetworking afnetworking-2


    【解决方案1】:

    这可能是服务器的问题。确保在使用新凭据登录时清除用户会话。

    【讨论】:

    • 天哪,你说的完全正确。谢谢你。更仔细地检查服务器日志,我可以看到第一个请求正在访问数据库,而第二个没有 - 相反,服务器正在发送它缓存的响应。 AFNetworking 没有任何问题。我当时很傻。谢谢。
    猜你喜欢
    • 2022-01-23
    • 2019-01-12
    • 1970-01-01
    • 2014-08-14
    • 2016-02-16
    • 1970-01-01
    • 2017-07-24
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多