Android Webview с таймером прокси - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблема с веб-представлением Xamarin.Android в сочетании с прокси.

Сценарий:

Приложение Xamarin.Android, состоящее только из WebView, которое пытается загрузить "http://google.com".

Когда я нахожусь на Wi-Fi без прокси-сервера, он работает нормально.

Когда мой Wi-Fi использует прокси-сервер для доступа к Интернету, время ожидания истекло, настройки прокси-соединения для соединения Wi-Fiвеб-просмотр не вызывает у меня уважения. С браузером Chrome на планшете все работает нормально.

Я перепробовал все, что смог найти, но, похоже, ничего не работает ... Эти методы устарели и возвращают ноль или для порта-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");

Итак, мой вопрос: как я могу заставить веб-просмотр работать с прокси-сервером, установленным на Wi-Fi?

Я заблокирован из-за этой проблемы из-за этой неделии очень благодарен за любую помощь, которую я могу получить.

Код:

        // 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 и страница загружается нормально.

...