在Android中存储和恢复Cookie(持久性cookie存储)

时间:2012-05-22 14:23:31

标签: android cookies client-server

搜索了很多。

我有一个应用程序。应用程序登录服务器并接收一些cookie,然后它可以与它们执行一些POST请求(例如,获取用户配置文件)。我想在会话之间存储它们(这意味着我可以重新启动设备,运行应用程序并获取配置文件而无需额外登录)。或者,换句话说,如何创建持久性cookie存储?

我使用的是唯一的DefaultHttpClient,而且没有WebViews。但是我应该在使用一些cookie创建后初始化这个客户端。我应该把它存放在文件中还是什么?有没有办法以iOS方式做到没有奇怪的黑客,存储在文件/数据库和手动填充CookieManagers?

3 个答案:

答案 0 :(得分:4)

现在我正在使用PersistentCookieStorage类来实现这些目的。我在应用程序启动时创建一个单例。它将Cookie存储在SharedPreferences中。

答案 1 :(得分:0)

java.net.CookieStore的实现,用于提供持久性cookie。

使用此https://gist.github.com/manishk3008/2a2373c6c155a5df6326

答案 2 :(得分:0)

CookieManager中存储一些数据:

void populateCookieStore(URI uri)
        throws IOException {

    CookieManager cm = new CookieManager(null, CookiePolicy.ACCEPT_ALL);

    CookieHandler.setDefault(cm);

    Map<String,List<String>> header = new HashMap<>();

    List<String> values = new ArrayList<>();

    values.add("JSESSIONID=" + SESSION_ID + "; version=1; Path="
               + URI_PATH +"; HttpOnly");

    values.add("CUSTOMER=WILE_E_COYOTE; version=1; Path=" + URI_PATH);

    header.put("Set-Cookie", values);

    cm.put(uri, header);
}