通过在ShouldInterceptRequest中向WebResourceRequest的标头添加标头来向WebView添加自定义标头不起作用

唐盒

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

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

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

我在SO上看到了许多答案,说您必须执行HTTP请求并返回WebResourceResponse自己。这是因为即使您像我一样修改标头,它们也会被忽略吗?

我还尝试在Android源代码中查找对WhereIntercallRequest的调用的位置的位置,以便我自己查看其工作方式,但找不到。

唐盒

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

如果返回值为null,则WebView将照常继续加载资源。否则,将使用返回响应和数据。

此外,一个简单的测试示出了基实现的WebViewClient.shouldInterceptRequest收益null因此,WebView基本上继续像往常一样加载资源。

换句话说,我不能只向标头添加一个值并期望它被使用。我实际上需要亲自完成请求并返回响应。

太糟糕了,无法修改标头并让默认实现使用它。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档