回顾完Session和Cookie,我们来说说为什么手机端与服务器交互没有实现在同一session下

1)原因很简单,就是因为android手机端在访问web服务器时,没有给http请求头部设置sessionID,而使用web浏览器作为客户端访问服务器时,在客户端每次发起请求的时候,都会将交互中的sessionID:JSESSIONID设置在Cookie头中携带过去,服务器根据这个sessionID获取对应的Session,而不是重新创建一个新Session(除了这个Session失效)。


以java.net.HttpURLConnection发起请求为例:

获取Cookie: 

URL url = new URL(requrl);
 HttpURLConnection con= (HttpURLConnection) url.openConnection(); 
// 取得sessionid. 
String cookieval = con.getHeaderField("set-cookie"); 
String sessionid; 
if(cookieval != null) { 
sessionid = cookieval.substring(0, cookieval.indexOf(";")); 
}

//sessionid值格式:JSESSIONID=AD5F5C9EEB16C71EC3725DBF209F6178,是键值对,不是单指值

发送设置cookie: 

URL url = new URL(requrl);
HttpURLConnectioncon= (HttpURLConnection) url.openConnection(); 
if(sessionid != null) { 
con.setRequestProperty("cookie", sessionid); 
}

只要设置了sessionID,这样web服务器在接受请求的时候就会自动搜索对应的session了,从而保证了在同一会话Session。


http://my.oschina.net/janson2013/blog/111050


其实就是登陆成功之后 ,保存SESSIONID。然后每次请求的时间带上这个SESSIONID。



更多相关文章

  1. 《解析 Google Android(安卓)DSK-智能手机开发范例手册》.(薛显
  2. Android手机的USB
  3. 极光推送完整流程测试
  4. Android(安卓)ProgressBar 自定义样式(一)
  5. 局域网场景下Android客户端实现同数据库连接通信
  6. Android集成Mob3.0.0短信验证功能SMSSDK For Android
  7. OpenCV 学习日记-写在前面(1) 2014.9.20
  8. 获取Nexus系列手机驱动(用于编译Android(安卓)ROM的驱动)
  9. Android免root查看数据库内容

随机推荐

  1. 第74天:Python newspaper 框架
  2. 解决sqlplus中不能上下翻阅历史命令的问
  3. 教你RHEL7部署TOMCAT8
  4. 使用sendemail发送邮件遇到的坑
  5. 看了这篇文章、我一礼拜学会了Java
  6. 课程学习记录之python简单库和正则
  7. 硬盘出现“此卷不包含可识别的文件系统”
  8. 0407作业-留言板、字符串和数组的常用方
  9. 使用shell脚本监控Linux主机
  10. 区块链在数据流通中的应用