一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述Android的cookie的接收和发送相关的知识,希望能为你提供帮助。
我在做自动登录的时候遇到的坑,特写此文以提醒各位不要把自己绕进去了。
我们都知道在web端的cookie是可以通过服务器端设置保存的,默认是关闭浏览器就清除cookie的,但是可以在服务器端设置cookie的有效期,浏览器就会自动保存cookie,而在android上是不会自动保存cookie,我用的是Okhttp3,我找不到response.addCookie(cookie)和request.getCookies()的方法(java web的操作),如果没有保存和重发cookie给服务器的话,是不会自动登录的。搞了大半天才知道这一切都在head里。
如果是Okhttp3的话是这样的
【Android的cookie的接收和发送】
文章图片
在日志输出的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) { 6SharedPreferences preference = context.getSharedPreferences(ISLOGINED, Context.MODE_PRIVATE); 7SharedPreferences.Editor editor = preference.edit(); 8editor.putString(COOKIE, value); 9editor.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调试的Log.d()没有输出
- Android中关于JNI 的学习在JNI层訪问Java端对象
- android AIDL 实践之传递简单字串
- Android UI开发第四十三篇——使用Property Animation实现墨迹天气3.0引导界面及动画实现
- Prim算法-最小生成树算法
- Kruskal最小生成树算法
- 最小生成树的应用
- 图论算法(最小生成树介绍)
- N皇后问题和回溯算法