我使用了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,似乎我需要写这个功能。你有什么好建议吗?
答案 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特有的;它只是饼干的工作方式。