2

我正在使用最简单的方法来维护会话,即:

只需创建 1 个 HttpClient 并将其用于每个服务器调用,它将自动处理 cookie 等,

但这里的问题是,当我关闭应用程序时,HttpClient 对象正在被破坏,正如预期的那样,因此我无法登录。

所以我修复了它,这样:

将用户电子邮件和密码存储在共享首选项中,每次启动应用程序时都会调用登录函数(这会创建一个新会话)并使用相同的 HttpClient。

这里的问题是,Web 服务器中的每个会话都有 3 年的有效期。当我创建会话时(因为每次用户启动应用程序时我都调用登录),每次用户启动应用程序时。这会导致会话重复,或者说在服务器端创建了不必要的会话。

我做对了吗?我该如何解决这个问题?

谢谢你

4

2 回答 2

0

只需实现您自己的 CookieStore。这很简单:扩展 BasicCookieStore,对其进行实例化并将其传递到 HttpContext 中。您可以将其存储在 sqlite 数据库中,甚至只是将其转储到 xml 文件(但 sqlite 更轻)。我在这里工作,但我现在没有时间清理代码。

于 2012-11-08T06:33:52.277 回答
0

除非您的应用程序需要在后台运行(例如 GPS 跟踪),否则最简单的方法是在应用程序关闭时注销并在应用程序打开时登录。如果需要,您可以自动执行此操作,以免影响用户。您仍然可以使用SharedPreferences用户电子邮件和密码,只是在应用程序启动时自动登录,在应用程序关闭时注销。另一种解决方案是降低服务器端超时,但这取决于您是否可以更改服务器设置或者是否需要以这种方式设置。

于 2012-11-08T06:40:08.597 回答