之前曾问过这个问题,但没有给出正确的工作答案。
Android - extracting cookies after login in webview
我的问题有很多子部分:( visual studio 2017 Android Emulator API25)
1 - 我需要连接一个网址../signin,将我重定向到Office365登录。 之后它会把我送到../login。
2-我需要在../login重定向后获取office365 / backend提供的cookie。 (在iOS中你不需要声明url来获取cookie,但在android中你必须)(How do I access cookies in a Xamarin WebView?)
3- ../signin有HTTPS,但我的webview元素无法打开网站。但是,我可以打开谷歌,脸书等。我收到不受信任的SSL错误。从我的笔记本电脑,我可以连接到该网址。
4-虽然它实际上是iOS的2-3行代码,但对于android我无法找到任何结果。我需要在重定向后获取当前的webview网址。但是,webview.URL
仅返回webview.loadURl(String url)
的初始给定网址,尽管它不是当前网址。
5-我搜索了webview.onPageFinished(WebView webview,String URL)
以便输入当前网址,并检查它是否为../login rightnow。所以我可以得到饼干。 iOS有onPageFinished事件监听器,但Android没有。
继承我的代码:
WebView wv = new WebView(this);
SetContentView(wv);
wv.SetWebViewClient(new WebViewClient());
wv.LoadUrl("../signin");
wv.Settings.JavaScriptEnabled = true;
var client = new WebViewClient();
wv.SetWebViewClient(new WvClient(this, wv));
for onPageListener
public class WvClient : WebViewClient
{
public Activity mActivity;
public WvClient(Activity mActivity,WebView wv)
{
this.mActivity = mActivity;
onPageFinished(wv,wv.Url);
}
public void onPageFinished(WebView wv, String url)
{
var cookieHeader = CookieManager.Instance.GetCookie(wv.Url);//This is how I will get the cookie.
}
public void onReceivedSslError(WebView view, SslErrorHandler handler, Android.Net.Http.SslError er)
{
handler.Proceed();// Ignore SSL certificate errors
}
}
谢谢!
答案 0 :(得分:0)
您应该覆盖这些方法。然后你可以在重定向之后获得webview的每个URL。
例如:
public override void OnPageFinished(WebView view, string url)
{
var cookieHeader = CookieManager.Instance.GetCookie(view.Url);
base.OnPageFinished(view, url);
}
public override void OnReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
{
handler.Proceed();
}