gpt4 book ai didi

android - 通过在 shouldInterceptRequest 中向 WebResourceRequest 的 header 添加 header 来向 WebView 添加自定义 header 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:18 69 4
gpt4 key购买 nike

我需要将自定义 header 添加到 WebView 中加载的页面,但它不起作用, header 未设置:

@Override
public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request)
{
request.getRequestHeaders().add("MyHeader","MyValue");
return super.shouldInterceptRequest(view, request);
}

我在这里做错了什么?我在 Android 5 上运行。

我看到很多关于 SO 的回答都说你必须自己执行 HTTP 请求并返回 WebResourceResponse。这是因为即使你像我一样修改标题,它们也会被忽略吗?

我还试图在 Android 源代码中找到调用的位置调用 shouldInterceptRequest 的位置在哪里,所以我可以自己查看它是如何工作的,但我找不到它。

最佳答案

我自己找到了答案,答案就在 docs 中:

If the return value is null, the WebView will continue to load the resource as usual. Otherwise, the return response and data will be used.

此外,一个简单的测试显示 WebViewClient.shouldInterceptRequest 的基本实现返回 null。所以 WebView 基本上继续像往常一样加载资源。

换句话说,我不能只向 header 添加一个值并期望它被使用。我实际上需要自己执行请求并返回响应。

太糟糕了,没有办法只修改 header 并让默认实现使用它。

我知道我可以通过使用 header 调用 loadUrl 方法来设置 header ,但是如果我先加载本地页面然后加载在线页面,则不会使用 header 。

关于android - 通过在 shouldInterceptRequest 中向 WebResourceRequest 的 header 添加 header 来向 WebView 添加自定义 header 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412965/

69 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com