【安卓笔记】Android保持Session
简介:
Session的概念在Android开发中遇到概率还是比较少,之前遇到一个项目的登陆接口返回不是Token,而且自己需要和服务端保持是Session,虽然这种情景很少,但是有时候后端有这种要求就没有办法。
Android保持Session
现在Android开发基本都是用OkHttp了,这里介绍如何使用OkHttp实现Session保持。
开始之前先简介一下Cookie与Session的区别与联系:
1、Cookie储存在客户端,Session储存在服务器端,他们之间的概念相似,都是用于存储信息。
2、Session由SESSION_ID和相关键值对信息组成,SESSION_ID标识一个客户端。
2、Session是基于Cookie而实现的,把SESSION_ID通过Cookie储存在客户端。
3、每次请求时将SESSION_ID加入请求头中发送到服务端,从而匹配SESSION_ID所对应的Session信息
Http响应的Response Header中的Set-Cookie就是告诉客户端要设置cookie,cookie值是一个字符串,有特殊的格式:
一般的格式:Set-Cookie: <cookie-name>=<cookie-value>
更多格式参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie
一般我们使用浏览器的时候,cookie会自动存储起来,并在请求的时候自动加入到请求头中,所以网站中我们登陆了之后,刷新页面或者下次重新进入网站,依然能识别到我们的身份。
在移动端原生的开发环境中,大部分框架并不会自动把cookie保存起来,当然就不会把cookie自动加入到请求头中。
使用OkHttp取出Cookie并保存的示例代码:
@Override public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { Headers headers =response.headers(); //response为okhttp请求后的响应 List<String> cookies = headers.values("Set-Cookie"); if (cookies.size() > 0) { String session = cookies.get(0); // 保存cookie值,这里第一个Cookie就是SESSION_ID,根据实际情况调整 sessionid = session.substring(0, session.indexOf(";")); }
使用OkHttp把SESSION_ID回传服务器示例代码:
OkHttpClient okHttpClient = mHttp; Request.Builder request = new Request.Builder().url(url); // 把SESSION_ID回传服务器 request.addHeader("cookie", sessionid); Call call = okHttpClient.newCall(request.build()); Response response = call.execute();
【安卓笔记】Android保持Session的更多相关文章
- Android Studio安卓学习笔记(一)安卓与Android Studio运行第一个项目
一:什么是安卓 1.Android是一种基于Linux的自由及开放源代码的操作系统. 2.Android操作系统最初由AndyRubin开发,主要支持手机. 3.Android一词的本义指“机器人”, ...
- [转]【安卓笔记】AsyncTask源码剖析
[转][安卓笔记]AsyncTask源码剖析 http://blog.csdn.net/chdjj/article/details/39122547 前言: 初学AsyncTask时,就想研究下它的实 ...
- Xamrin开发安卓笔记(三)
http://www.cnblogs.com/minCS/p/4118170.html Xamrin开发安卓笔记(三) 安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次 ...
- Xamrin开发安卓笔记(二)
http://www.cnblogs.com/minCS/p/4112617.html Xamrin开发安卓笔记(二) 安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出 ...
- Xamrin开发安卓笔记(一)
http://www.cnblogs.com/minCS/p/4108133.html Xamrin开发安卓笔记(一) 安装篇 环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有 ...
- Mina框架的学习笔记——Android客户端的实现
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- 仿春雨医生 安卓app(android)
仿春雨医生 安卓app(android) 目前APP处与开发完善中,可过程序自下载更新,如有BUG报错,请联系QQ 131 065 1206 支持安卓(android) .IOS(IPHONE),PA ...
随机推荐
- java当中JDBC当中请给出一个Oracle DataSource and SingleTon例子
[学习笔记] 6.Oracle DataSource and SingleTon: import oracle.jdbc.pool.OracleDataSource;import java.sql.C ...
- 1144: 零起点学算法51——数组中删数(C语言)
题目: 题目来源WUSTOJ 源代码: #include<stdio.h> int main() { int n, m, i, a[20]; while (scanf("%d&q ...
- Python之推导式笔记
观察下面的代码: list1 = [] for i in range(10): list1.append(i) print(list1) 作为一个Java出身的程序员,我一定会这么写代码去生成一个列表 ...
- #448 div2 a Pizza Separation
A. Pizza Separation time limit per test1 second memory limit per test256 megabytes inputstandard inp ...
- 利用WkHtmlToPdf,把H5 转成PDF
工具下载地址: 链接:https://pan.baidu.com/s/1TSq2WWZcvPwuIfPRHST-FA 提取码:wkx8 原理: 通过IIS访问页面,利用WkHtmlToPdf.exe, ...
- R_数据操作_初级_03
数据的输入:详见(http://cran.r-project.org/doc/manuals/R-data.pdf下载的R Data Import/Export手册②) 1.键盘输入:使用edit() ...
- JAVA笔记整理(七),JAVA几个关键字
本篇主要总结JAVA中的super.this.final.static.break.continue 1.super super主要用在继承当中,表示调用父类的构造函数. 1.如果要在子类方法中调用父 ...
- Python面向对象Day2
一.组合 给一个类的对象分组一个属性,这个属性是另一个类的对象 意义:让类的对象与另一个类的对象产生关系,也叫类与类之间产生关系(继承也能) 好处: ① 让两个类之间产生关系 ② 某一个对象是独立存在 ...
- vue 打印html
1.https://github.com/xyl66/vuePlugs_printjs从这个路径下载print.js.放到你的代码中 2.我是放到我本地一个js文件中. 3.引入当前文件 //打印插件 ...
- LVS工作原理及集群类型
Cluster概念 Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统 Linux Cluster类型: LB:Load Balancing,负载均衡 HA:High ...