当你关闭应用程序时,CookieManager会丢失cookie吗



我正在开发一个应用程序,该应用程序可以与服务器对话并具有登录屏幕。我正在使用httpconnection与服务器通信(服务器将Json响应发回)。我的登录屏幕发送电子邮件和密码,由服务器验证-服务器发送cookie,并期望cookie与每个进一步的请求一起知道用户已登录。

我使用cookie管理器和cookie处理程序来启用会话,这样用户只需登录一次。

在我的主活动中使用以下2个命令(在创建方法上)

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

工作模式是,我的主要活动向服务器发送一个读取命令,该命令检查用户是否已经登录(期望cookie中包含id),并在json中发送状态。如果状态为0,则移动到登录活动,否则移动到主屏幕。

在登录活动中,我发送带有用户名和密码的登录命令,服务器发送一个cookie(发送一个唯一的id,在任何进一步的请求中交叉检查该id以验证用户),并返回json响应。

登录后,我转到主屏幕并读取状态,由于我在主活动中创建了CookieManager,它会自动发送带有每个httprequest的cookie。

问题是——当我退出应用程序并在登录后返回时。。它再次从主活动开始,转到登录屏幕而不是主屏幕。我不知道为什么会这样,也不知道如何让我的用户登录一次,然后即使他退出应用程序,它也会保留cookie。

我认为CookieManager会在您退出后仍保留cookie。是因为我在create方法中创建cookie管理器对象,当应用程序退出并重新启动时,它会再次创建新对象吗?或者我的假设是错误的。

默认情况下,new CookieManager()将在内存中存储cookie。

但是,您可以使用不同的构造函数来更改此行为:CCD_ 2。

至少有两种持久的java.net.CookieStore实现:

  • 使用HTTPUrlConnection时,如何保存cookie
  • PersistentCookieStore
If I move the Cookiemanager to the application class, it's just get called once and solve this issue. 
public class application extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
            CookieManager cookieManager = new CookieManager();
            CookieHandler.setDefault(cookieManager);
    }
    public static Context getContext() {
        return application.context;
    }

最新更新