关于android客户端访问web服务器session问题。

本文介绍了一种Android客户端与Java Web服务器交互时遇到的Session管理问题。由于客户端无法像浏览器那样通过Cookie自动传递Session ID,导致服务器每次都创建新的Session。文章提供了解决方案,包括使用CookieStore或直接在请求头中添加Session ID。

    记得前段时间做个项目,就是一个android客户端去访问Java web服务器,然后交互数据。

    客户端首先需要登录才能访问主界面等其他操作,这个一般都是如此,都需要一个登录验证,就在登录以后继续操作时出现了问题,根据服务端返回的标识码,继续操作时老是返回到登录界面,当时很是纳闷,就到服务端调试了一下,因为以前做过j2ee开发,服务端代码能看懂,调试结果发现,android客户端每次提交请求,服务端都会创建一个新的session。

    当时比较困惑,因为之前做j2ee的时候没遇到过这情况!想了很久,这和做j2ee几乎是一样的,如果说有差别,就是这不是用浏览器去请求的。

    随着这个思路又去上网查了资料,发现一个网友写的资料,我感觉应该是正确的,具体网址我忘记了,貌似是一个php程序员,他写的大致内容是session的建立以及如何维护的,大致意思是说浏览器第一次请求到服务端,服务端从cook获取sessionID不存在,这时服务端就会创建一个新的session,然后返回浏览器客户端,浏览器客户端将sessionID存在cook中,下次请求时cook会将此sessionID传到服务端,这样就维护了一个session;手机端访问服务端,哪来的cook啊,找到了问题所在。

    后来又上网查了查,也查了点API,发现有个CookieStore可以用,貌似获取它时,会增加很多流量,所以一般使用它时,只在登录时获取一次httpclient.getCookieStore(),然后存入Application中,下次执行请求前从Application中获取set即可httpclient.setCookieStore(cookieStore),这个CookieStore里会存有客户端和服务端初次会话时建立的sessionID;其实也可以将sessionID加入到请求的头部,如httpPost.setHeader("Cookie", "JSESSIONID=" + SessionId),这样应该也可以。
   哎,只是感觉很惭愧,记得之前学习时,学到过session是如何维护在客户端与服务端的,呼呼呼,不求甚解,只求会用,出现问题,啧啧啧。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavPer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值