如何使用AFNetworking管理会话?

时间:2012-06-11 16:54:03

标签: ios session cookies afnetworking

正如标题所暗示的,我在iOS项目中使用AFNetworking,其中应用程序与服务器通信。当用户登录时,服务器通过发回成功标志来响应,响应头包含会话ID。

我想知道AFNetworking是否会在每次后续请求中自动发送会话ID,还是应该以某种方式自行处理?

对于您的信息,我无法控制请求的身份验证后端。我只是在建立一个与服务器通信的客户端。

2 个答案:

答案 0 :(得分:116)

是的,您的会话ID应该在您登录后自动发送,只要cookie在下一个请求发送之前没有到期(重要的细节可以确定)。 AFNetworking使用的NSURLConnection会为您处理此细节。

在后端,AFNetworking正在使用NSURLConnection,而NSHTTPCookieStorage会自动更新NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress]; for (NSHTTPCookie *cookie in cookies) { [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; } 以存储会话。您可以通过弄乱cookie存储来操纵或删除cookie。

如果您希望在未登录的情况下向服务显示,则可以删除与该域关联的会话cookie。如果您已经登录并尝试再次登录,我使用过的某些服务将会出错。此外,无法检查登录状态。快速修复,从URL获取cookie并删除它们:

{{1}}

From the developer himself

答案 1 :(得分:4)

这取决于您正在与之交互的服务给出的规范。我曾经使用过类似的服务,他们在文档中明确指出,为了保持会话有效,我必须每隔几秒钟通过发送int“1”来轮询服务。

但是,如果可能,请发布服务名称或我们可以阅读的任何参考。如果它是任何公司的私有API,那么他们必须描述他们返回的会话ID的使用。


基础技术会照顾它,但是如果你想坚持这些cookie,那么这个答案可以解决其他问题。

Persisting Cookies In An iOS Application?