记得前段时间做个项目,就是一个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是如何维护在客户端与服务端的,呼呼呼,不求甚解,只求会用,出现问题,啧啧啧。
本文介绍了一种Android客户端与Java Web服务器交互时遇到的Session管理问题。由于客户端无法像浏览器那样通过Cookie自动传递Session ID,导致服务器每次都创建新的Session。文章提供了解决方案,包括使用CookieStore或直接在请求头中添加Session ID。
2645

被折叠的 条评论
为什么被折叠?



