android - 如何在android webView中获取WebResourceRequest的主体

标签 android webview

我需要修改android webView请求的请求头。因此,我在方法 shouldInterceptRequest 中添加以下代码.
这是我的代码:

@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
    try {
        String mUrl = request.getUrl().toString();
        OkHttpClient httpClient = new OkHttpClient();
        Request mRequest = new Request.Builder()
                .url(request.getUrl().toString())
                .addHeader("token", UserHelper.getToken()) //add headers
                .build();
        Response response = httpClient.newCall(mRequest).execute();

        return new WebResourceResponse(
            getMimeType(request.getUrl().toString()), // set content-type
            response.header("content-encoding", "utf-8"),
            response.body().byteStream()
        );
    } catch (Exception e) {
        return super.shouldInterceptRequest(view, request);
    }
    return super.shouldInterceptRequest(view, request);
}
实际上,它有效,所有请求都带有新的 header 。但是,因为我构造了新的请求,所以原来的请求方法/正文丢失了。我不知道如何从 WebResourceRequest 中保留原始方法和正文。

最佳答案

WebResourceRequest 是一个无法读取请求正文的接口(interface),但是您可以使用自己的接口(interface),例如此 repo 剂量。
https://github.com/KonstantinSchubert/request_data_webviewclient

webView.setWebViewClient(new WriteHandlingWebViewClient() {
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, WriteHandlingWebResourceRequest request) {
        // works the same as WebViewClient.shouldOverrideUrlLoading, 
        // but you have request.getAjaxData() which gives you the 
        // request body
   }
});

关于android - 如何在android webView中获取WebResourceRequest的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481042/

相关文章:

java - Eclipse启动时出现错误: 'Android LIbrary Update' has encountered

android - Phonegap Dev App 未出现在 chrome 远程调试器中

java - Appium:如何在混合应用程序中切换到 webview 并选择 webElement 而无需 JSONWP 代理

android - 自定义对话框在标题下没有分隔线

android - GSON 忽略 JSON 字符串中的缺失值

android - 在 Android 中实现无标记增强现实

android - 设备可用性、过滤和 Google Play

java - 用于复制 url-webview 的按钮

python - 设置GTK Webkit.Webview的HTML内容?

android - 从 WebView 添加日历事件