具有代理超时的Android Webview

时间:2018-04-25 11:54:56

标签: android xamarin xamarin.android http-proxy

我遇到了Xamarin.Android的webview与代理相结合的问题。

情景:

Xamarin.Android应用程序仅包含试图加载“http://google.com”的WebView。

当我在没有代理的wifi上时它工作正常。

当我的wifi使用代理访问互联网时,它超时,wifi连接的代理设置没有得到webview的尊重。使用平板电脑上的Chrome浏览器,它可以正常工作。

我尝试了一切我能找到但似乎没有任何工作...... 这些方法已过时并返回null或端口为-1。

Android.Net.Proxy.GetHost(this.ApplicationContext);
Android.Net.Proxy.GetPort(this.ApplicationContext);
Java.Lang.JavaSystem.GetProperty("http.proxyPort");
Java.Lang.JavaSystem.GetProperty("http.proxyHost");

所以我的问题是: 如何让webview与wifi上的代理集配合使用?

由于项目存在问题,我已经被阻止了一周,非常感谢我能得到的所有帮助。

代码:

        // Inflate layout and find view
        SetContentView(Resource.Layout.cas_login);
        WebView wv = FindViewById<WebView>(Resource.Id.casWebView);

        // Get URLs
        string sessionId = UVM.GetJSessionId();
        string apiUri = App.GetApiURI();
        string websiteUrl = App.GetWebsiteUri();
        string websiteRedirectUrl = websiteUrl + "api/myInfo/infos";
        string requestUrl = $"{apiUri}login?requestUrl={websiteRedirectUrl}";

        // Setup webView
        wv.Settings.JavaScriptEnabled = true;
        wv.Settings.BuiltInZoomControls = true;
        wv.Settings.DisplayZoomControls = true;
        wv.Settings.DomStorageEnabled = true;
        wv.Settings.DatabaseEnabled = true;
        wv.Settings.AllowContentAccess = true;
        wv.Settings.SetAppCacheEnabled(true);
        wv.Settings.UserAgentString = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36";
        wv.Settings.MixedContentMode = MixedContentHandling.AlwaysAllow;

        wv.SetWebViewClient(new CasWebViewClient(websiteRedirectUrl, ShowMainActivity));
        //wv.SetWebChromeClient(new WebChromeClient());

        WebView.SetWebContentsDebuggingEnabled(true);
        WebView.EnablePlatformNotifications();

        CookieManager.Instance.SetCookie(websiteUrl, sessionId);

        // Load URL
        _logger.LogMessage(LogLevel.Debug, "CasLogin.cs OnCreate", "Loading page: " + requestUrl);
        wv.LoadUrl(requestUrl);

PS:如果我使用WebChromeClient它工作正常,它会打开chrome并且页面加载正常。

0 个答案:

没有答案