星空网 > 软件开发 > 操作系统

大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session

事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的Html5页面,而h5页面有些需要进行授权才能访问,如用户中心,我的订单,我的商品等等,而我们的登陆是在原生的activity里实现的,在登陆成功后服务端会向它分配一个SessionID,并存储在客户端,以做为下次访问的标识,而使用webview进行访问页面时,这个sessionID和之前的是不同的,所以,在之前的授权是无效的,为了解决这个问题,我们需要让原生和H5网站的sessionID进行同步!

Login Activity内容

 if (msg.State == "200")  {    var ccd = new List<string>(response.Result.Headers.GetValues("Set-Cookie"));    var arr = ccd[0].Split(new char[] { ';' })[0].Split(new char[] { '=' })[1];    Toast.MakeText(this, "sessionid=" + arr, ToastLength.Short).Show();    ConfigData.SessionID = arr;    Intent intent = new Intent(this, typeof(PageActivity));    StartActivity(intent);   }

然后在Page Activity中将这个sessionID写到对应的域名中

        CookieSyncManager.CreateInstance(this);      CookieManager cookieManager = CookieManager.Instance;      cookieManager.SetCookie(GetString(Resource.String.apiHost), "ASP.NET_SessionId=" + ConfigData.SessionID);      var webView = FindViewById<WebView>(Resource.Id.webView);      webView.Settings.JavaScriptEnabled = true;      webView.LoadUrl(api);      webView.SetWebViewClient(new CustWebViewClient());

在上面的代码中,我定义了一个全局变量,用来保存当前的sessionID

 public static class ConfigData  {    public static string SessionID { get; set; }  }

 这个对象是静态的,属性也是静态的,这说明它是一个在程序启动时就会被初始化的对象!

 




原标题:大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

国际小包air:https://www.goluckyvip.com/tag/102478.html
国际专线小包物流:https://www.goluckyvip.com/tag/102479.html
小黑说外贸:https://www.goluckyvip.com/tag/10248.html
国际物流小包专线:https://www.goluckyvip.com/tag/102480.html
国际物流专线小包:https://www.goluckyvip.com/tag/102481.html
国际小包海运:https://www.goluckyvip.com/tag/102482.html
价格翻了8倍,居然还有人买,秘诀在这里。:https://www.kjdsnews.com/a/1836642.html
欧洲B2B电商市场有待挖掘!销售总额将达1.7万亿欧元:https://www.kjdsnews.com/a/1836643.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流