当我在WebView内按下内容时,我正在尝试向从WebView到服务器的Ajax请求添加额外的标头。 如果我使用WebView而不覆盖“ shouldInterceptRequest”,则一切正常Screenshot 1
但是,如果覆盖“ shouldInterceptRequest”,则服务器中将出现错误。 Screenshot 2
怎么了?如何找到WebView请求和我的请求之间的区别? 如何解决?我花了4个小时没有结果... 这是我的代码:
private WebResourceResponse getNewResponse(String url) {
try {
RequestBody reqbody = RequestBody.create(null, new byte[0]);
Request request = new Request.Builder()
.url(url)
.addHeader("Cache-Control", "max-age=0")
.addHeader("Origin", "null") //Optional
.addHeader("Upgrade-Insecure-Requests", "1")
.addHeader("User-Agent", userAgent)
.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
.addHeader("Accept-Language", Locale.getDefault().getLanguage())
.addHeader("Cookie", extraHeaders.get("Cookie"))
.addHeader("X-Requested-With", BuildConfig.APPLICATION_ID)
.addHeader("X-MAPP-TAPP", ApiConstants.X_MAPP_TAPP)
.addHeader("X-MAPP-TDEV", ApiConstants.X_MAPP_TDEV)
.addHeader("X-MAPP-IDEN", AskemApp.instance.getDeviceId())
//.post(reqbody)
.build();
//Request.Builder formBody = new Request.Builder().url(url).method("POST",reqbody).header("Content-Length", "0").addHeader("Cookie", extraHeaders.get("Cookie"));
//Response response = new OkHttpClient().newCall(formBody.build()).execute();
Response response = new OkHttpClient().newCall(request).execute();
Log.d("resti.club", "Заголовки ");
return new WebResourceResponse(
null,
response.header("content-encoding", "utf-8"),
response.body().byteStream()
);
}
catch (Exception e) {
return null;
}
}