Android Webview拦截Ajax的麻烦

时间:2018-07-10 16:49:25

标签: java android ajax web webview

当我在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;
            }

        }

0 个答案:

没有答案