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