Подтвердить что ты не робот

Android, перехват URL перехвата веб-браузера

Мой веб-просмотр загружает URL-адрес, который - после завершения загрузки - заменяется на другой URL-адрес. как я могу поймать новый url. getURL() всегда возвращает 1-й URL-адрес, а не второй. Я могу видеть новый URL-адрес, если я использую браузер, но я не могу получить его из веб-представления.

4b9b3361

Ответ 1

Вы можете использовать webClient и реализовать shouldOverrideUrlLoading, чтобы перехватить все URL-адреса перед тем, как WebView загрузит их.

    mWebView.setWebViewClient(new WebViewClient() {


        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
           // Here put your code
              Log.d("My Webview", url);

           // return true; //Indicates WebView to NOT load the url;
              return false; //Allow WebView to load url
        }
    });

Ответ 2

Использование

getOriginalUrl () 

Он возвращает URL-адрес, который был первоначально запрошен для текущей страницы

getUrl () не всегда совпадает с URL-адресом, переданным в WebViewClient.onPageStarted, потому что, хотя загрузка для этого URL-адреса началась, текущая страница, возможно, не изменилась.

getOriginalUrl () получает исходный URL для текущей страницы. Это не всегда совпадает с URL-адресом, переданным в WebViewClient.onPageStarted, потому что, хотя загрузка для этого URL-адреса началась, текущая страница, возможно, не изменилась. Кроме того, возможно, были перенаправления, в результате чего был запрошен другой URL-адрес.

Ответ 3

В моем случае WebViewClient не показывался, были ли изменения в веб-просмотре, я предположил, что это что-то в сети, которая работает.

Я мог бы получить эту информацию из WebChromeClient с помощью OnProgressChanged, я не знаю, поможет ли это людям в любом случае, но вот код:

webview.webChromeClient = object: WebChromeClient() {

    override fun onProgressChanged(view: WebView?, newProgress: Int) {
        super.onProgressChanged(view, newProgress)

        if (newProgress == 100) {
            Log.d("testing", webview.getOriginalUrl())
            Log.d("testing", webview.url)
        }
    }
}

Таким образом, я мог знать, что загружено и когда закончено.