J2ME开发中由WAP网关带来的cookie问题

J2ME开发中由WAP网关带来的cookie问题

在之前的产品开发中,遇到一个奇怪的问题,软件在在CMNET下能正常工作,当用了CMWAP时问题出来,后来问题找到了。在CMWAP下,客户端如果带上Cookie,有时会遇到无法正常登录等情况,下面简单介绍其原因及解决办法。

1、 Cookie是如何工作?
一般来说,Cookie通过HTTP Headers实现服务器端与客户端的交互。首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie ,然后,客户端在它的请求中通过Cookie header包含这个已经创建的Cookie,并且返回至服务器,从而完成浏览器的论证。

2、 Cookie的作用
服务器利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的作用,cookie很好地解决了一些问题,但同时也带来一些问题,如WAP网关对Cookie的处理问题。

3、 WAP网关存在的问题
WAP网关存在不少问题,其中之一如开发者最为头疼的问题便是cookie的处理。由于不少低端手机浏览器本身不支持cookie,于是WAP网关越俎代庖担当起此重任--通过网关软件使这些手机支持cookie,此僭越行为导致移动开发者无所适从,具体表现在:

a. 手机上清除cookie后仍有cookie
b. cookie会莫名其妙的丢失或者产生
c. 重复的cookie存在导致生成非法请求Header
应该还有很多很细小的问题让开发者头疼,在互联网上运行好好的机制移到WAP上就会有这样那样的问题,这些问题更多集中在用户登录、权限控制等方面,问题如何解决呢?解决办法是让WAP网关不保存cookie,下面将讲讲在J2ME中如何解决问题。

4、 J2ME如何设置Cookie与Cookie问题处理
J2ME设置Cookie时,通过setRequestProperty 设置Http头信息,代码如下:

HttpConnection hc = (HttpConnection? )(Connector.open(url)); 

hc.setRequestMethod(method); 

hc.setRequestProperty("cookie",cookies); 

 

上面的代码在直接连接互连网时没问题,但在用cmwap连接互连网时却会出现问题,我们以登录为例,有时cookies为空时也能正常登录,通过测试发现WAP网关保存了cookie,为了解决这个问题,我们必须让WAP网关不保存cookie,解决的办法是在HTTP头加上:

hc. setRequestProperty("X-Wap-Proxy-Cookie","none"); 

 

通过测试,问题解决了!

 

说明:移动梦网文档:http://www.monternet.com/download/web0323/wapt02.doc 有这样一段描述

2.5.2  COOKIE规范
1. COOKIE一般情况下存放在用户的手机上,若用户手机不支持COOKIE功能,则WAP网关将协助存储用户COOKIE信息;
2. COOKIE可分为永久性COOKIE和暂时性COOKIE,通过手机与WAP网关的配合,两种COOKIE均可实现,可根据业务的需求选择使用;
3. 暂时性COOKIE的保存时间一般是1小时,可根据业务的需要自行指定;
4. 在游戏、社区类业务中,涉及用户身份识别的信息应使用永久性COOKIE;

        

 导读
手机中的重定向问题及处理 http://fonter.iteye.com/blog/400836
J2ME如何通过cmwap直接访问互连网 http://fonter.iteye.com/blog/400868
安装JAD时提示JAD无效原因之一 http://fonter.iteye.com/blog/400888
J2ME网络交互之优化 http://fonter.iteye.com/blog/405137
解决Eclipse无法调试J2ME程序的配置方法 http://fonter.iteye.com/blog/405697

J2ME模拟器加载RMS时突然失效的原因 http://fonter.iteye.com/blog/407576

J2ME飞信协议分析(初稿) http://fonter.iteye.com/blog/408385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值