我使用最简单的方法来维护会话,这是:
只需创建1个HttpClient并将其用于每个服务器调用,这将自动处理cookie等。
但问题是,当我关闭应用程序时,HttpClient对象正在按预期被销毁,因此我无法登录。
所以我用这种方式解决了这个问题:
将用户电子邮件和密码存储在共享首选项中,每次启动应用程序时都会调用登录功能(这会创建一个新会话)并使用相同的HttpClient。
问题在于,Web服务器中的每个会话都有3年的到期时间。我在哪里创建会话(因为我每次用户启动应用程序时都会调用登录),每次用户启动应用程序时。这会导致会话重复或在服务器端创建不必要的会话。
我是以正确的方式做到的吗?我该如何解决这个问题?
谢谢
答案 0 :(得分:0)
只需实现自己的CookieStore即可。这很简单:扩展BasicCookieStore,实例化它并在HttpContext中传递它。您可以将它存储在sqlite数据库中,甚至可以将其转储到xml文件中(但sqlite更轻)。我在这里工作,但我现在没时间清理代码。
答案 1 :(得分:0)
除非您的应用需要在后台运行(例如GPS跟踪),否则最简单的方法是在应用关闭时退出并在打开时登录。如果需要,您可以自动执行此操作,这样就不会影响用户。您仍然可以使用SharedPreferences
作为用户电子邮件和密码,只需在应用启动时自动登录,并在应用关闭时注销。另一种解决方案是降低服务器端超时,但这取决于您是否可以更改服务器设置或是否需要以此方式设置。