Получил исключение при вызове available () для InputStream, возвращенного из shouldInterceptRequest - PullRequest
0 голосов
/ 24 января 2019

E / InputStreamUtil: Получено исключение при вызове available () для InputStream, возвращенного из shouldInterceptRequest. Это приведет к связанный запрос не выполнен. java.io.IOException: закрыто на okio.RealBufferedSource $ 1.available (RealBufferedSource.java:448) в org.chromium.android_webview.InputStreamUtil.available (SourceFile: 8)

Я получил эту ошибку при попытке загрузить ответ OkHttp в Webview. Входной поток ответа OkHttp содержит,

<!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Fordconnect</title>
      <base href="/common/login/">
      <meta http-equiv="content-type" content="text/html;charset=utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.ico">
    </head>
    <body>
      <app-root></app-root>
    <script type="text/javascript" src="/common/login/runtime.xxxx.js"> 
    </script>
    <script type="text/javascript" src="/common/login/polyfills.yyy.js"> 
    </script>
    <script type="text/javascript" src="/common/login/styles.zzz.js"> 
    </script>
    <script type="text/javascript" src="/common/login/main.mmm.js"></script>
    </body>
    </html>

Можем ли мы загрузить HTML с Javascript в WebView? Я включил JavaScript и добавил разрешение ИНТЕРНЕТ в файле манифеста.

webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new Webviewclient());
webView.clearCache(false);
webView.clearHistory();



@NonNull
private WebResourceResponse getWebViewResponse(String url) {
Response response = null;
try {

OkHttpClient okHttpClient = new OkHttpClient.Builder()
                            .addInterceptor(new BasicAuthInterceptor("ddd", 
    "dadadada")).build();
     final Call call = okHttpClient.newCall(new Request.Builder()
                       .url(url)
                        .get()
                        .build()
                    );

                    response = call.execute();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return new WebResourceResponse("text/html", "utf-8", response.body().byteStream());
            }

Я получил вывод в веб-виде Веб-страница недоступна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...