2014-02-27 77 views
3

我使用AFHTTPClient,似乎它存储在框中的cookie。所以,当我登录后,然后重新加载我的应用程序时,Cookie自动应用程序。也许我对此感到困惑。但似乎它按我描述的方式工作。AFNetworking 2可以存储cookie

现在我用这个代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

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

但是,当我重新启动我的申请,我得到消息,错误标记,当我试图请求我的一些API的方法。

那么如何使用上面的代码存储我的cookies。我使用这个代码来完成我的所有登录,注销和其他api服务的请求。如果我不重新启动它很好,但我重新运行它似乎饼干从我身上。

我该如何解决这个问题?

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

我检查过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的改变。

哦,我明白了,该应用程序不保存饼干,似乎我需要写这个功能。你有好的建议怎么做?

+0

我认为这只是在Xcode中进行调试时的一个问题 - 请参阅http://stackoverflow.com/a/15465853/1445366 - 在没有连接到Xcode的实际设备上有任何问题吗? –

+0

@AaronBrager你觉得呢?不,我还没有测试过。所以你猜cookie必须存储在设备上。我发现这个URL如何保存cookie,然后重新创建它,但我想AFNetworking 2在框中有这个功能。 http://stackoverflow.com/questions/14387662/afnetworking-persisting-cookies-automatically –

+0

您不应该在NSUserDefaults中存储cookie,如该答案中所示。你应该使用NSHTTPCookieStorage(这就是现在正在发生的事情)。 –

回答

1

Persisting Cookies in an iOS Application

饼干没有到期日被认为是“唯一的会话”,当你重新启动应用程序将被清除。您可以通过NSHTTPCookie中的BOOL属性检查“仅限会话”情况。这是标准的cookie,而不是iOS特有的。

AFNetworking不会对引擎盖下的cookies做任何事情。它使用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特定的;这只是饼干如何工作。