用volley 就是觉得可以简单不用序列化数据,用retrofit2 就是整合了.接口,数据的序列化.适合大点的项目管理
用retrofit2 写了一个新闻数据库的一个App ,要将以前用 volley写的 用户管理, 转到 retrofit2 ,新闻模块
就要求 retrofit2 发送 cookie 中保存的,session id 数据
Andorid app 中保存,cookie 的方式就是 用本地存储 sp,方式, 数据库网关用 node.js 做的web 服务器 ,开启sesson 支持实现 用户免登.现在我做的的这个 app 还没有转到 https ,所以还没有用到 okhttp3 拦截器的复杂功能.恰只使用 它的添加header ,的简单功能
- 我先摆个书袋子.
所谓 session id 就是,node.js web 端识别每次访问者的一种加密串,好像是上车后的"票根"或者说是,出门的"卡票",你每次登录同一个网址如果没有,保存这个"票" 下次,再来就没有办法证明你来过,所以这个"票根"
每次都是"新的" 如果你没有将你保存的"票根"提供给 web .识别.web 就不能知道你来没来过.下面web
就可以凭借 这个session id ,将后面登录,后的权限逻辑应用于你的请求.
简单的模式就是 ,你某一次访问web ,如果登录输入密码,如果你的app将此次web 给的 session id 串,
(这个串就是http head 中的 cookie id 数据, 保存下,存储在你本地的 sp ,中 )保存. 你下次app 登录
这个web 必需用使用它,也就是 加在你的http head 中
okhttp3 (是retrofit2 配合使用的)
.addHeader("Cookie", cookieStr)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
这里原来的有一个坑,就是使用了 header 而不是 addHeader ,
不知道是不是版本的问题.
volley 中
public String getBodyContentType() {
return "application/x-www-form-urlencoded";
}
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap localHashMap=new HashMap();
localHashMap.put("Cookie",user.get(mSessionManager.SESSION_ID));
return localHashMap;
}
-
volley 是一个很好的入门,
因为volley 使用的时候,你只用在一个