android与服务器连接保持
回顾完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。
更多相关文章
- 《解析 Google Android(安卓)DSK-智能手机开发范例手册》.(薛显
- Android手机的USB
- 极光推送完整流程测试
- Android(安卓)ProgressBar 自定义样式(一)
- 局域网场景下Android客户端实现同数据库连接通信
- Android集成Mob3.0.0短信验证功能SMSSDK For Android
- OpenCV 学习日记-写在前面(1) 2014.9.20
- 获取Nexus系列手机驱动(用于编译Android(安卓)ROM的驱动)
- Android免root查看数据库内容