我正在使用Xamarin为我的Web应用程序创建本机登录屏幕。
登录视图提交详细信息,握手,并在满足登录凭据时返回成功。但是,由于会话cookie在我打开页面后没有存储在手机的网络视图中,因此无法正常工作。
有什么办法可以从HttpClient调用的结果中获取会话cookie并将其传递给Xamarin WebView。这可以在一个普通的类中完成,还是必须是特定于设备的?如果它必须是特定于设备的,那么有没有办法为Windows Phone做到这一点?
任何建议都会很棒。
干杯。
答案 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。