中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

大叔也說(shuo)Xamarin~Android篇~原生(sheng)登陸與WebView的網站如(ru)何共享Session

回到目錄

事情(qing)是這(zhe)樣的(de)(de),我(wo)(wo)們(men)最近(jin)開了一(yi)個(ge)(ge)(ge)APP,主(zhu)要使(shi)用xamarin做了一(yi)個(ge)(ge)(ge)登陸,它與服務(wu)器(qi)API進(jin)行(xing)數據通訊,當用戶名(ming)密碼正確去,跳轉到(dao)新(xin)的(de)(de)activity,并在webview控件中(zhong)(zhong)打開服務(wu)端(duan)(duan)的(de)(de)Html5頁(ye)面,而h5頁(ye)面有些需(xu)要進(jin)行(xing)授權(quan)才能訪(fang)問(wen),如用戶中(zhong)(zhong)心(xin),我(wo)(wo)的(de)(de)訂單,我(wo)(wo)的(de)(de)商品(pin)等(deng)等(deng),而我(wo)(wo)們(men)的(de)(de)登陸是在原(yuan)生(sheng)的(de)(de)activity里實(shi)現的(de)(de),在登陸成(cheng)功后服務(wu)端(duan)(duan)會向它分配一(yi)個(ge)(ge)(ge)SessionID,并存儲(chu)在客戶端(duan)(duan),以做為(wei)下(xia)次訪(fang)問(wen)的(de)(de)標識,而使(shi)用webview進(jin)行(xing)訪(fang)問(wen)頁(ye)面時,這(zhe)個(ge)(ge)(ge)sessionID和之前(qian)的(de)(de)是不同(tong)的(de)(de),所以,在之前(qian)的(de)(de)授權(quan)是無效的(de)(de),為(wei)了解決這(zhe)個(ge)(ge)(ge)問(wen)題,我(wo)(wo)們(men)需(xu)要讓原(yuan)生(sheng)和H5網站(zhan)的(de)(de)sessionID進(jin)行(xing)同(tong)步!

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);
     }

然后在(zai)Page Activity中將(jiang)這個sessionID寫到對應(ying)的域(yu)名中

        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());

在上(shang)面的代碼中,我定義(yi)了一個全局變量(liang),用來保存當前的sessionID

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

 這個對象是靜態的,屬(shu)性也是靜態的,這說明它是一個在程序啟動時就會被初始化的對象!

 回到目錄

posted @ 2015-12-24 17:32  張占嶺  閱讀(3437)  評論(0)    收藏  舉報