Xamarin - 从HttpClient传递到WebView的会话

时间:2014-10-28 04:18:23

标签: windows session webview xamarin

我正在使用Xamarin为我的Web应用程序创建本机登录屏幕。

登录视图提交详细信息,握手,并在满足登录凭据时返回成功。但是,由于会话cookie在我打开页面后没有存储在手机的网络视图中,因此无法正常工作。

有什么办法可以从HttpClient调用的结果中获取会话cookie并将其传递给Xamarin WebView。这可以在一个普通的类中完成,还是必须是特定于设备的?如果它必须是特定于设备的,那么有没有办法为Windows Phone做到这一点?

任何建议都会很棒。

干杯。

1 个答案:

答案 0 :(得分:0)

我在Windows Phone中做了类似的事情,但我有一个sessionId,我将其传递给webview源代码中的JavaScript - 我正在使用自定义渲染器然后调用网页上的脚本(WebView的源代码) )

要实现此设置,请使用自定义视图和渲染器。然后在您的渲染器中获取视图上的视图和sessionId属性:

protected override async void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);

        if(e.PropertyName == SessionWebView.SessionIdProperty.PropertyName)
        {
            view = Element as SessionWebView;
            Control.LoadCompleted += Control_LoadCompleted;         

            if (view != null)
            {
                _currentSessionId = view.SessionId;
            }
        }
    }

然后列出加载完成并在webview中调用javascript函数。

    void Control_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        try
        {
            if (!scriptCalled)
            {

                Control.IsScriptEnabled = true;
                var param = new string[1];
                param[0] = _currentSessionId;
                Control.InvokeScript("initWebView", param);
                scriptCalled = true;
            }
        }
        catch(Exception ex)
        {
            throw;
        }
    }

不确定是否有更好的方法,但这适用于WindowsPhone。