android移动端与服务端通信保持Session会话 本是古典 何须时尚 2022-05-18 02:46 162阅读 0赞 移动端在向服务器请求登录并且登录成功的时候,服务器的订单接口需要获取当前登录的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可用来标识当前的操作对象)。
还没有评论,来说两句吧...