有些 url 没有在 webview 中加载,但在浏览器中加载

Some url not loading in webview buts loading in the browser

我正在尝试使用我的网络视图加载一份报纸 URL。这是我的网络视图设置:

 binding.webView.settings
        .run {
            javaScriptEnabled = true
            builtInZoomControls = true
            displayZoomControls = false
            domStorageEnabled = true
            databaseEnabled = true
            loadWithOverviewMode = true
            useWideViewPort = true
        }

我要加载的 url 是:http://feeds.inquisitr.com/~r/google/yDYq/~3/1glI3navSEE/

但它没有加载,但是当我将此 url 粘贴到浏览器中时,url 被浏览器更改并完美加载。我还需要在我的 webview 中做什么,以便它像浏览器一样运行并更改(解码)url.

p.s:当我在浏览器中加载此 url 时,url 变为“https://www.inquisitr.com/6337911/big-brother-22-week-11-veto-winner/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+google%2FyDYq+%28The+Inquisitr+-+News%29"

解决这个问题的方法是什么?

您在上面的示例中使用了缩短的 URL。您需要获得最终的 URL 才能加载到 webView。您可以通过执行以下方法获得最终的URL:

public static String getFinalURL(String url) throws IOException {
        HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
        con.setInstanceFollowRedirects(false);
        con.connect();
        con.getInputStream();

        if (con.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM || con.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP) {
            String redirectUrl = con.getHeaderField("Location");
            return getFinalURL(redirectUrl);
        }
        return url;
    }

注意:此方法是递归的in-case有多个re-directions。