android移動端與服務端通訊保持Session會話
阿新 • • 發佈:2019-02-19
移動端在向伺服器請求登入並且登入成功的時候,伺服器的訂單介面需要獲取當前登入的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可用來標識當前的操作物件)。