快速业务通道

cookie技术在Java ME平台的应用与实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
ing getPath() {return path;}

public void setPath(String path) {this.path = path;}

public String getName() {return name;}

public void setName(String name) {this.name = name;}

public String getValue() {return value;}

public void setValue(String value) {this.value = value;}

public void serialize(DataOutputStream dos) throws IOException{dos.writeUTF(name);dos.writeUTF(value);dos.writeUTF(path);dos.writeLong(expire);}

public static Cookie deserialize(DataInputStream dis) throws IOException{Cookie cookie = new Cookie();cookie.name = dis.readUTF();cookie.value = dis.readUTF();cookie.path = dis.readUTF();cookie.expire = dis.readLong();return cookie;}

public long getExpire() {return expire;}

public void setExpire(long expire) {this.expire = expire;}//for debugpublic String toString(){return name+"="+value+";expires="+new Date(expire).toString()+";path="+path;}

public boolean isExpired(long now){return expire-now<0;}

public boolean isExpired(){return expire-(new Date().getTime())<0;}

public static Cookie parseCookie(String s,String uri){Cookie cookie = new Cookie();StringUtil su = new StringUtil(s,";");while(su.hasMoreTokens()){String str = su.nextToken().trim();int i = str.indexOf("=");if(i == -1){//secure do nothingcontinue;}else{String name = str.substring(0,i);String value = str.substring(i+1,str.length());if("path".equals(name)){cookie.setPath(value);}else if("expires".equals(name)){cookie.setExpire(StringUtil.getData(value));}else if("domain".equals(name)){//do nothing}else{cookie.setName(name);cookie.setValue(value);}}if(cookie.getPath().equals(""))cookie.setPath(uri);}return cookie;}

public boolean equals(Object obj){if(obj instanceof Cookie){Cookie o = (Cookie)obj;if(o.getName().equals(name) && o.getPath().equals(path))return true;}return false;}

public int hashCode(){int result = 17;result = result * 37 + path.hashCode();result = result * 37 + name.hashCode();return result;}}提供了一个parseCookie方法来解析cookie,具体的原理就不再介绍了。然后需要把这个Cookie对象存储到RMS中。cookie并不大,所以不会占用太多的空间,在RMS中存储非常合适。注意对于会话期间的cookie没有必要存储在rms中,因为会话结束后就失效了,不如在内存中声明一个Map来存储会话类型的cookie。

第三:发送cookie

发送cookie也是需要两个步骤,首先检索rms和内存看是否有满足条件的cookie,如果有读取出来。然后通过下面的方法向服务器端发送

//检查是否有cookie需要发送给服务器端String _cookie = collectCookie(url);if(_cookie != null)connection.setRequestProperty(COOKIE,_cookie);

如果能够顺利解决上面的三个步骤,基本可以实现cookie在java me平台的应用。在《Java ME核心技术与最佳实践》一书中,本人编写了一个httpme联网框架,其中包括了cookie在java me平台的实现,供大家参考。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号