android - 向 shouldInterceptRequest Android webview 中的所有请求添加自定义 header

标签 android webview

我想在 webview 中为请求添加自定义 header 。我认为应该可以在 shouldInterceptRequest 中完成。因为我的最低 API 级别低于 21 shouldInterceptRequest (最终 WebView View ,最终 String url)也被调用并且因此我也需要在此处添加 header ,但我不确定如何添加。

@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            request.getRequestHeaders().put("ClientId", "ANDROID");
            request.getRequestHeaders().put("Tokon", token);
        }

        return super.shouldInterceptRequest(view, request);
    }

    @Override
    public WebResourceResponse shouldInterceptRequest(final WebView view, final String url) {
        // I need to updated the header here

        return super.shouldInterceptRequest(view, url);
    }

有人建议使用 view.loadUrl(url,headers) 但这也不起作用。

最佳答案

使用 pre API 21 时遇到的困难是 shouldInterceptRequest 仅提供拦截的 URL 和没有请求正文的 webview。我遇到了同样的问题并发现了以下 GitHub 存储库

https://github.com/KeejOow/android-post-webview

这个项目的重要部分是assets文件夹中的interceptheader.html。此 html 包含插入到 webview 加载的每个 html 响应顶部的 javascript。此 JS 拦截来自页面的每个表单和 ajax 提交,并将正文数据加载到 java 类中。接下来 shouldInterceptRequest 方法根据正文中是否有任何数据来确定请求是 POST 还是 GET(不幸的是你只得到这两个)。

最后,一旦它整理了所有相关信息,它就会自行执行请求(而不是将其传递给 Android),并返回生成的 WebResourceResponse。

请注意,存储库已经老化。我不得不做一些小事来让页面按我想要的方式工作。

添加 header 的最佳位置是在 shouldInterceptRequest 下的 InterceptingWebViewClient 类中。

conn.setRequestProperty("header-name", value);

关于android - 向 shouldInterceptRequest Android webview 中的所有请求添加自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838571/

相关文章:

error-handling - GsonResponseBodyConverter的EOFException带有errorBody()

css - 使用主题 tokenColors 的 VS 代码 webview css 变量名称

android - Android 中的多个 webview

Android Studio OpenCV NDK : Unspecified error, 功能未实现

android - 如何使用OnKeyboardActionListener?

android - 添加 setOnTouchListener 后 Webview 不滚动

ios - 黑暗模式 :- Color inverting not working for WKWebview Tableview Content

jquery - Android WebView 不加载 jQuery

android - Android Webview中的多个文件上传

android - onChildClick 不适用于我的 ExpandableListView