1. 程式人生 > >android移動端與服務端通訊保持Session會話

android移動端與服務端通訊保持Session會話

移動端在向伺服器請求登入並且登入成功的時候,伺服器的訂單介面需要獲取當前登入的Session,才能夠以當前使用者身份下單,與web端不同,移動端的Session不會自動儲存到web端,每次請求都認為是一次新的請求。因此在移動端只要獲取到當前登入的Session並且記錄下來,在之後的請求中將該Session作為請求頭就能夠在之後的請求中保持同一個會話(好像Session是有時效的)。

public class User{
public static String mysession=null;
}
//定義一個靜態變數用來儲存Session
URL url1 = new URL("介面地址");
// 2.建立與目標資源的Http通訊連線
HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
if(User.mysession!=null)
{
urlConnection.setRequestProperty("cookie",User.mysession);
}
//主要程式碼,判斷Session是否為空,不為空則把Session作為請求頭
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
String cookieValue = urlConnection.getHeaderField("set-cookie");
if(cookieValue!=null)
{
Bean.mysession = cookieValue.substring(0,cookieValue.indexOf(";"));
}
//主要程式碼,獲取本次請求的Session,存入mysession
// 5.發起請求得到響應的資料
InputStream is = urlConnection.getInputStream() ;
// 6.封裝成字元流讀取最終請求回來的資料
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 一行一行的讀取資訊
String line = null ;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine())!=null){
sb.append(line);
}
//關閉連線
urlConnection.disconnect();
//返回資料
return sb.toString();

儲存Session後,在之後的請求中除非更新Session,否則都在同一個Session會話中(Session可用來標識當前的操作物件)。