AFNetworking 2可以存储cookie

时间:2014-02-27 19:12:21

标签: ios afnetworking afnetworking-2

我使用了AFHTTPClient,似乎它将cookie存储在盒子里。因此,当我登录然后重新加载我的应用程序时,cookie会自动进入应用程序。也许我对此感到困惑。但似乎它按我描述的方式工作。

现在我使用这段代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    [manager POST:path parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    }];

但是当我重新启动我的应用程序时,当我尝试请求一些api方法时,我收到错误令牌的消息。

那么如何使用上面的代码存储我的cookie。我将此代码用于登录,注销和其他api服务的所有请求。如果我没有重新启动它运行良好,但我重新运行它似乎cookie来自我。

我该如何解决这个问题?

我找到了这个答案link,但我不确定如何使用它。

我检查过cookies。

如果我不重新运行应用程序,则cookie是相同的:

<NSHTTPCookie version:0 name:"...." value:"....." expiresDate:(null) created:2014-02-27 19:24:29 +0000 (4.15222e+08) sessionOnly:TRUE domain:"...." path:"/" isSecure:FALSE>

但如果我重新运行应用程序,cookie就会被更改。

哦,我明白了,该应用程序不保存cookie,似乎我需要写这个功能。你有什么好建议吗?

1 个答案:

答案 0 :(得分:1)

来自Persisting Cookies in an iOS Application

  

没有过期日期的Cookie被视为“仅限会话”,并会在您重新启动应用时清除。您可以通过BOOL中的NSHTTPCookie媒体资源查看“仅限会话”情况。这是标准的cookie内容,而不是iOS特有的内容。

AFNetworking对于引擎盖下的cookie没有任何作用。它确实使用NSURLConnection,NSURLConnection使用NSHTTPCookieStorage。

根据您的日志:

<NSHTTPCookie version:0 name:"...." value:"....." expiresDate:(null) created:2014-02-27 19:24:29 +0000 (4.15222e+08) sessionOnly:TRUE domain:"...." path:"/" isSecure:FALSE>

您只有会话Cookie(“sessionOnly:TRUE”)。

您需要在服务器端添加过期日期,以便NSHTTPCookieStorage在会话结束时不会将其丢弃。

这不是AFNetworking特有的;它只是饼干的工作方式。