请教一个 WebView 的古怪问题

2023-06-26 20:55:51 +08:00
 RuralHunter

我在 Activity 里代码大概如下:

webview.setWebViewClient(new MyWebViewClient());
webView.loadUrl("https://www.aaa.com");

结果在 WebViewClient.onPageFinished(WebView view, String url)里得到的 url 却是"https://www.bbb.com"。这个 aaa 和 bbb 的确是有点关系,是同一个站点的不同域名。我怀疑是不是重定向的问题,但在浏览器里打开 https://www.aaa.com 并没有任何重定向,在手机的 chrome 里打开也一样没有重定向。我在 WebViewClient 的几个相关的方法里分别打印了得到的 url ,按照 log 顺序如下:

shouldInterceptRequest: https://www.aaa.com
shouldOverrideUrlLoading: https://www.bbb.com
onLoadResource: https://www.aaa.com
onPageStarted: https://www.bbb.com
doUpdateVisitedHistory: https://www.bbb.com
onPageFinished: https://www.bbb.com

这可能是什么原因?为什么这么奇怪?

8926 次点击
所在节点    Android
12 条回复
imqiyue
2023-06-26 22:44:15 +08:00
charles 抓包看下 http 请求是不是走了重定向
hiro0729
2023-06-26 23:04:11 +08:00
请求头的 UserAgent 带了 mobile 标识,网站通过判断 UserAgent 重定向到 wap 端了吧
mxalbert1996
2023-06-26 23:41:33 +08:00
WebView.setWebContentsDebuggingEnabled(true) 然后在 chrome://inspect 调试一下不就知道了
zhwanng
2023-06-27 10:08:03 +08:00
http 301 、302 的问题吧
zongren
2023-06-27 16:04:57 +08:00
就是跳转了吧,有可能 js 调用的
RuralHunter
2023-06-27 22:00:38 +08:00
@hiro0729 应该不是的,我手机的浏览器肯定带了 mobile 标识了,打开也没有重定向。
RuralHunter
2023-06-27 22:14:47 +08:00
@mxalbert1996 我的 api 版本可能太低? webview 没有这个 setWebContentsDebuggingEnabled 方法,另外 chrome 也打不开 chrome://inspect
mxalbert1996
2023-06-27 22:31:20 +08:00
@RuralHunter
setWebContentsDebuggingEnabled() API 19 就有了,是个静态方法,你是不是在实例方法里找了?
chrome://inspect 你是在桌面端打开的么?
而且我关键词都给你了你搜一下不就知道了。
https://blog.csdn.net/freak_csh/article/details/95585148
RuralHunter
2023-06-27 22:35:57 +08:00
setWebContentsDebuggingEnabled 可以了,原来是个静态方法,但是 chrome 还是打不开 chrome://inspect ,显示 invalid url
RuralHunter
2023-06-27 22:38:29 +08:00
@mxalbert1996 明白了,要 usb 连手机啊,我这个奇怪的问题是在手机上是好的,只有在 android studio 的模拟器里有问题,所以没法用手机测。
RuralHunter
2023-06-27 22:46:02 +08:00
原来电脑上的 chrome://inspect 打开能看到模拟器,inspect 页面能够看到模拟器里我的 app ,可是点击 inspect 跳出来的 devtools 一直是空白的
RuralHunter
2023-07-04 20:54:59 +08:00
好不容易发现 inspect 白屏的原因,原来 chrome 需要翻墙才能打开。然而打开 inpect 后发现更怪的问题了,我的 activity 一启动,在 inspect 里的网址栏显示的就是 bbb ,我就在 inspect 的网址栏里输入 aaa ,想看看它怎么重定向到 bbb ,结果根本没有重定向,打开的页面网址显示就是 aaa ,跟其它浏览器正常表现一样。最奇怪的是,从此以后我的 activity 里的 webview 再打开 aaa 也也不会到 bbb 了,log 里面都只显示 aaa ,从此以后就一直是我预期中的 aaa 了,再也没有出现问题,重新运行,不管 debug 或 inspect 开不开,都没有问题,没有 bbb 。为何如此诡异?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX