cookie技术在Java ME平台的应用与实现 - 编程入门网
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |