midp方因为没有cookie内容,所以实现 session tracking 需要在客户端的每次请求中把取到的session id手工加入到请求头中

1. 从response中获取 cookie 里的session id的信息 在servlet中是通过注入JSESSIONID这个属性来实现的

    String readCookie(HttpConnection conn) throws IOException {
  String key;
  String value;
  String[] substrs;
  
for (int i = 0; (key = conn.getHeaderFieldKey(i)) != null++i) {
   key 
= key.toLowerCase();
   
if (key.equals("set-cookie")) {
    value 
= conn.getHeaderField(i);
    substrs 
= StringUtil.split(value, ';');
    
for (int j = 0; j < substrs.length; j++{
     
if (substrs[j].toUpperCase().startsWith("JSESSIONID=")) {
      
return substrs[j];
     }

    }

   }

  }

  
return null;
 }


 

2. 请求头处理 在httpConnection中手工注入 Sessionid 。 sessionid 通过在手机端调用readCookie方法获取

 

if (mSession != null{
 conn.setRequestProperty(
"cookie", mSession);
}

 



3. 如果使用get方法通讯,那么服务器方不需要再做任何设定,  如果是post方法,经试验,则需要手工加入cookie

 

response.addCookie(new Cookie("JSESSIONID", request.getSession(true)
    .getId()));


这样就可以象普通的web应用一样跟踪管理会话了