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

Android开发如何检查应用发出的HTTP(S)请求头?

针对WebView+Cronet链路的请求头调试可行方案
  • 方案1:Cronet请求链路内置日志埋点(优先推荐,无外部依赖,数据100%准确)
    你所有真实请求都是在ShouldInterceptRequest拦截后通过Cronet手动发起的,直接在Cronet请求层做埋点即可,完全绕开WebView调试限制、代理证书问题、IDE工具适配问题:
    构建CronetEngine时注册全局请求完成监听器,就能拿到全量真实请求、响应数据,示例代码:
    val cronetEngine = CronetEngine.Builder(applicationContext)
        .addRequestFinishedListener { requestInfo, responseInfo, error ->
            Log.d("CronetReqLog", "=== Request: ${requestInfo.method} ${requestInfo.url} ===")
            // 打印所有真实发送的请求头
            requestInfo.allHeaders.forEach { (headerKey, headerValues) ->
                Log.d("CronetReqLog", "Req Header: $headerKey = ${headerValues.joinToString(";")}")
            }
            // 打印响应信息和响应头
            responseInfo?.let {
                Log.d("CronetReqLog", "=== Response: ${it.statusCode} ===")
                it.allHeaders.forEach { (headerKey, headerValues) ->
                    Log.d("CronetReqLog", "Resp Header: $headerKey = ${headerValues.joinToString(";")}")
                }
            }
            error?.let {
                Log.e("CronetReqLog", "=== Request failed ===", it)
            }
        }
        // 保留原有Cronet配置
        .build()
    
    如果使用的Cronet版本较低没有提供全量头查询API,直接在你组装请求、调用addHeader方法添加头的位置同步打印日志,在响应回调位置遍历打印响应头即可,没有任何适配成本,拿到的就是实际发出去的真实数据,不会出现临时头、展示头和实际发送头不一致的问题。
  • 方案2:配置debug包信任用户证书,解决代理抓包证书校验失败问题
    Fiddler、HTTP Toolkit抓包失败核心是Android 7及以上版本默认不信任用户手动安装的CA证书,针对debug包单独配置信任规则即可,该配置仅对debug构建生效,不会影响线上版本安全:
    1. 在项目res/xml目录下新建network_security_config.xml文件:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <debug-overrides>
            <trust-anchors>
                <certificates src="system" />
                <!-- 信任用户安装的CA证书,即抓包工具生成的根证书 -->
                <certificates src="user" />
            </trust-anchors>
        </debug-overrides>
    </network-security-config>
    
    1. 在AndroidManifest.xml的application标签下添加属性:android:networkSecurityConfig="@xml/network_security_config"
    2. 如果你的Cronet请求配置了SSL Pinning,debug版本临时关闭该逻辑即可。配置完成后正常设置系统代理走抓包工具,就能看到所有Cronet发出的请求完整内容。
  • 方案3:适配Cronet到Chrome调试面板
    之前Chrome Inspect只能看到WebView的原始provisional请求,是因为默认调试能力没有接入Cronet的请求链路,给Cronet添加对应的调试拦截器后,所有Cronet发出的真实请求会自动同步到PC端Chrome的Network面板中,你原来的调试流程不需要改动,就能像看普通网页请求一样查看头、响应体、请求时序等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:39:03