使用NSURLConnection执行不同的请求可以使会话保持活动状态吗?

时间:2012-02-14 12:02:33

标签: objective-c cocoa session nsurlconnection keep-alive

我正在使用NSRULConnection在我的iphone应用程序上发出http请求。一切正常。

问题出在登录后我需要保持相同的会话以从服务器获取数据。

我读了一些帖子说我需要的只是使用相同的NSURLConnection实例,它会使用相同的会话...如果这是真的,那对我来说没有意义,因为NSURLConnection不可变,没有方法可以更改请求,因为我必须访问不同的页面。

无论如何,使用NSURLConnection来保持会话是一种简单的方法。

1 个答案:

答案 0 :(得分:0)

如果您使用Cookie管理会话,则无需执行任何特殊操作即可实现会话管理。The URL loading system会自动发送任何适用于NSURLRequest的存储Cookie。除非请求指定不发送cookie。因此,您的会话应该自动为您管理。

但是,正如Apple的文档所说,如果有人将cookie接受策略设置为拒绝所有cookie或仅选择性地接受cookie,那么您可能正在修复(您也可以自己更改cookie接受策略)。在这种情况下,您可以使用基于URL的会话管理;其中您将会话标识符作为参数附加到URL(您可以将此标识符作为成功登录响应的一部分),这可以在服务器端提取。然而,这被认为是非常糟糕的做法。

我经常遇到的另一种方法是将会话标识符作为成功登录响应的一部分,并将该标识符作为参数包含在所有后续请求中。虽然这需要对服务器处理会话的方式进行重大更改。