我正在尝试使用Web视图加载报纸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,它会完美加载。我还需要在我的网络视图中做什么,这样它就可以像浏览器一样改变(解码(url。
p.s:当我在浏览器中加载这个url时,url变成";https://www.inquisitr.com/6337911/big-brother-22-week-11-veto-winner/?utm_source=feedburner&utm_medium=馈送&utm_campaign=订阅源%3A+谷歌%2FyDYq+%28The+Inquisitr+-+新闻%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;
}
注意:如果有多个重定向,这种方法是递归的。