【发布时间】:2018-03-10 21:35:22
【问题描述】:
我需要修改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);
}
实际上,它可以工作,所有请求都带有新的标头。但是,因为我构造了新的请求,所以原来的请求方法/正文丢失了。我不知道如何从 WebResourceRequest 中保留原始方法和正文。
【问题讨论】:
-
您可以将正文存储在实例变量中并在进一步的请求中传递很长的内容吗?
-
有什么解决办法吗?