android與服務器連接保持

回顧完Session和Cookie,我們來說說爲什麼手機端與服務器交互沒有實現在同一session下

1)原因很簡單,就是因爲android手機端在訪問web服務器時,沒有給http請求頭部設置sessionID,而使用web瀏覽器作爲客戶端訪問服務器時,在客戶端每次發起請求的時候,都會將交互中的sessionID:JSESSIONID設置在Cookie頭中攜帶過去,服務器根據這個sessionID獲取對應的Session,而不是重新創建一個新Session(除了這個Session失效)。


以java.net.HttpURLConnection發起請求爲例:

獲取Cookie: 

URL url = new URL(requrl);
 HttpURLConnection con= (HttpURLConnection) url.openConnection(); 
// 取得sessionid. 
String cookieval = con.getHeaderField("set-cookie"); 
String sessionid; 
if(cookieval != null) { 
sessionid = cookieval.substring(0, cookieval.indexOf(";")); 
}

//sessionid值格式:JSESSIONID=AD5F5C9EEB16C71EC3725DBF209F6178,是鍵值對,不是單指值

發送設置cookie: 

URL url = new URL(requrl);
HttpURLConnectioncon= (HttpURLConnection) url.openConnection(); 
if(sessionid != null) { 
con.setRequestProperty("cookie", sessionid); 
}

只要設置了sessionID,這樣web服務器在接受請求的時候就會自動搜索對應的session了,從而保證了在同一會話Session。


http://my.oschina.net/janson2013/blog/111050


其實就是登陸成功之後 ,保存SESSIONID。然後每次請求的時間帶上這個SESSIONID。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章