You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio 2022.2.1网络检查器无数据及WebView流量排查问题

问题解决:Android Studio Network Inspector无法捕获WebView流量

环境信息

Android Studio Flamingo | 2022.2.1
Build #AI-222.4459.24.2221.9862592, built on March 31, 2023
Runtime version: 17.0.6+0-b2043.56-9586694 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0

问题1:如何确认WebView.loadUrl()是否使用HttpsURLConnection或OkHttp?

默认情况下,Android系统WebView(基于Chromium内核)不依赖HttpsURLConnection或OkHttp,它拥有独立的内置网络栈,和应用层的网络库完全隔离。验证方式:

  • 启用WebView调试日志:在应用初始化时添加WebView.setWebContentsDebuggingEnabled(true);,然后在Logcat中过滤chromium或Network关键词,查看WebView内部网络请求的日志细节,可直接确认其使用的是自身网络栈。
  • 检查自定义实现:如果没有手动通过WebViewClient的shouldInterceptRequest方法替换请求逻辑,WebView必然使用默认内核网络栈,不会走HttpsURLConnection或OkHttp。

问题2:如何让WebView.loadUrl()的流量在Network Inspector的Connection View中显示?

由于Network Inspector仅支持HttpsURLConnection和OkHttp,要捕获WebView流量,需让WebView请求走这两个支持的网络库,或使用替代工具:

方案1:拦截WebView请求,改用OkHttp/HttpsURLConnection发起

通过自定义WebViewClient拦截请求,将请求转发到OkHttp(或HttpsURLConnection),再把响应返回给WebView。示例代码(OkHttp):

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        OkHttpClient client = new OkHttpClient.Builder().build();
        Request okHttpRequest = new Request.Builder()
                .url(request.getUrl())
                .method(request.getMethod(), request.getMethod().equals("POST") ? RequestBody.create(null, new byte[0]) : null)
                .build();

        try (Response response = client.newCall(okHttpRequest).execute()) {
            String contentType = response.header("Content-Type", "text/html");
            String encoding = response.header("Content-Encoding", "utf-8");
            return new WebResourceResponse(
                    contentType,
                    encoding,
                    response.body().byteStream()
            );
        } catch (IOException e) {
            e.printStackTrace();
            return super.shouldInterceptRequest(view, request);
        }
    }
});

此方法需处理POST请求、Cookie、缓存等场景,实现复杂度较高,但能让WebView流量被Network Inspector捕获。

方案2:使用Network Profiler替代Network Inspector

Android Studio的Network Profiler可以捕获应用内所有网络流量(包括WebView默认栈的请求),操作步骤:

  1. 打开Profiler(View > Tool Windows > Profiler)
  2. 连接目标设备与应用
  3. 切换到Network标签,即可查看所有网络请求,包括WebView发起的流量。

方案3:使用WebView远程调试工具

通过Chrome浏览器的远程调试功能查看WebView流量:

  1. 在应用中启用WebView调试:WebView.setWebContentsDebuggingEnabled(true);
  2. 打开Chrome浏览器,输入chrome://inspect
  3. 连接设备后,找到目标WebView实例,点击inspect,在弹出的DevTools中切换到Network标签,即可查看WebView的所有请求细节。

内容的提问来源于stack exchange,提问作者Introspective

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:35:05