有些 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。
我正在尝试使用我的网络视图加载一份报纸 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。