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
分享到:
- 2009-05-31 18:12
- 浏览 3759
- 评论(9)
- 论坛回复 / 浏览 (9 / 6937)
- 查看更多
相关推荐
在J2ME开发中,开发者通常会使用集成开发环境(IDE),如NetBeans、Eclipse或JBuilder,这些工具提供了代码编辑、调试和打包应用的功能。编写完代码后,需要通过模拟器或实际设备进行测试。 "J2ME开发.pdf"可能包含...
资源管理是J2ME开发中的关键问题,因为移动设备通常拥有有限的存储空间和电池寿命。开发者需要学习如何有效地管理和加载图像、音频和数据文件,以减少内存占用并提高性能。 此外,书中还会讲解J2ME的安全模型,包括...
在J2ME中,应用程序称为MIDlet套件,由一个或多个MIDlets(J2ME应用程序的主要执行单元)和相关的资源文件组成。每个MIDlet套件都有一个MIDlet-Manifest文件,包含了关于MIDlet套件的元数据,如版本、名称和权限...
Java 2 Micro Edition(J2ME)是一种针对嵌入式设备和移动设备的Java平台,主要用于开发手机应用、智能家电控制、游戏等。本"j2me开发教程全集"涵盖了J2ME开发的核心概念、技术和实践案例,是学习和掌握J2ME编程的...
这本书的"完整版"意味着它涵盖了J2ME开发的所有核心概念和技术,包括基础理论、实战案例以及常见问题的解决方法。 J2ME开发主要包括以下关键知识点: 1. **J2ME架构**:J2ME由配置(Configurations)、配置文件...
**J2ME开发大全** Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于...同时,随着移动技术的发展,虽然现在J2ME的使用不如过去广泛,但其背后的编程思想和解决问题的方式依然对现代移动开发有着启示作用。
在J2ME中,如JSR-118(MIDP 2.0)、JSR-135(J2ME多媒体API)等,扩展了平台功能。 ### 10. 应用部署 J2ME应用通常通过WAP、OTA(Over-The-Air)或USB连接部署到设备上,JAD(Java Application Descriptor)文件...
**J2ME 开发环境配置详解** Java 2 Micro Edition(J2ME)是一种轻量级的Java平台,主要用于移动设备、嵌入式系统和其他有限资源的设备。对于初学者来说,配置J2ME开发环境可能显得有些复杂,但通过以下几个步骤,...
在IT行业中,Java 2 Micro Edition (J2ME) 是一种专门用于开发移动设备和嵌入式系统的Java平台。Eclipse作为一个广泛使用的开源集成开发环境(IDE),支持多种编程语言,包括Java。本教程将详细介绍如何利用Eclipse...
在J2ME开发中,选择合适的开发工具至关重要,因为它们能够帮助开发者高效地创建、测试和调试应用程序。本文将详细介绍如何使用J2ME开发工具进行应用程序开发。 **1. 环境搭建** 首先,我们需要安装Java ...
J2ME由配置(Configurations)和 profiles(Profiles)组成,配置定义了运行环境的最低需求,如CLDC(Connected Limited Device Configuration)适用于内存和处理能力有限的设备;而profiles则进一步定义了特定类型...
《J2ME开发精解》是一本专注于Java Micro Edition(J2ME)技术的详细教程,旨在帮助读者全面掌握在小型设备和嵌入式系统上进行应用程序开发的技能。J2ME是Java平台的一个子集,特别设计用于资源有限的移动设备,如...
文档中详细规定了WAP网关与在线服务器之间的接口要求,以及Java无线服务平台与在线服务器的接口细节。这些接口的设计确保了数据的高效传输和业务的顺利开展。同时,安全要求部分强调了数据加密、用户隐私保护和防止...
J4ME-开源的 UI Logger 项目是一个 J2ME 应用程序开发包,它包括一个 UI 框架、一个日记框架用于帮助调试因不同品牌手机的差异而产生的问题。 5. OpenBaseMovil OpenBaseMovil 是一个 J2ME 应用程序开发框架,包括...
"是男人就下一百层"是一款经典的游戏,其源码基于J2ME开发,体现了J2ME在游戏编程中的应用。 1. J2ME架构:J2ME由配置(Configurations)和 profiles(Profiles)组成。配置定义了设备的基本硬件特性,如内存和...
这些环境变量将帮助你在开发过程中更好地管理和调用J2ME WTK中的库文件。 ##### 3.2 集成开发环境 (IDE) 的选择与配置 J2ME开发通常可以使用各种集成开发环境,如Eclipse、NetBeans、JBuilder等。这里以MyEclipse...
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...
安装过程中,确保勾选"Java ME"相关的组件,这样IDE会包含J2ME开发所需的插件。 3. **安装Java SDK** J2ME开发需要Java Standard Edition(Java SE)的SDK。访问Oracle官网,下载并安装最新版本的Java SDK。安装...