我需要为来自WebView的每个请求添加自定义标头.我知道loadURL有参数extraHeaders,但这些只适用于初始请求.所有后续请求都不包含标头.我查看了所有覆盖内容WebViewClient,但没有任何内容允许向资源请求添加标头 - onLoadResource(WebView view, String url).任何帮助都会很精彩.
谢谢,雷
我需要修改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);
}
Run Code Online (Sandbox Code Playgroud)
实际上,它的工作原理,所有请求都带有新的标题.但是,因为我构造了新请求,原始请求方法/正文丢失了.我不知道如何从WebResourceRequest保留原始方法和正文.
全部在标题中。
每次自动设置此标头对任何人都有好处吗?有谁知道这个规范背后的想法?