Android的cookie的接收和发送

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android的cookie的接收和发送相关的知识,希望对你有一定的参考价值。

我在做自动登录的时候遇到的坑,特写此文以提醒各位不要把自己绕进去了。

我们都知道在web端的cookie是可以通过服务器端设置保存的,默认是关闭浏览器就清除cookie的,但是可以在服务器端设置cookie的有效期,浏览器就会自动保存cookie,而在android上是不会自动保存cookie,我用的是Okhttp3,我找不到response.addCookie(cookie)和request.getCookies()的方法(Java web的操作),如果没有保存和重发cookie给服务器的话,是不会自动登录的。搞了大半天才知道这一切都在head里。

如果是Okhttp3的话是这样的

 技术分享

在日志输出的cookie

 技术分享

 

通过这样的方法我们已经拿到了cookie,接下来就是保存cookie了,写以下的静态方法来将cookie保存到SharedPreferces,我的设计思想是尽量少操作数据库。

 1 public static final String ISLOGINED = "islogined";
 2 public static final String COOKIE = "cookie";
 3  
 4 
 5 public static void saveCookiePreference(Context context, String value) {
 6     SharedPreferences preference = context.getSharedPreferences(ISLOGINED, Context.MODE_PRIVATE);
 7     SharedPreferences.Editor editor = preference.edit();
 8     editor.putString(COOKIE, value);
 9     editor.apply();
10 
11 }

然后调用该方法保存cookie

 技术分享

然后再写一个方法来在SharedPreferces获取cookie的值

public static String getCookiePreference(Context context) {
    SharedPreferences preference = context.getSharedPreferences(ISLOGINED, Context.MODE_PRIVATE);
    String s = preference.getString(COOKIE, "");
    return s;
}

 

最后要做的是在每次的请求时带上cookie,这cookie是放在head里。

 技术分享

这样就可以实现自动登录了。

以上是关于Android的cookie的接收和发送的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb基础 Cookie 发送和接收cookie

c#如何采集需要登录的页面

将数据从活动发送到片段android工作室[重复]

在 Android 中同时使用 Datagramsocket 发送和接收 - 只是发送?

带有片段的 Android Up 按钮未显示完整片段

Android Java使用JavaMail API发送和接收邮件的代码示例