WebView не получает ошибку, даже если сервер возвращает ошибку

1

Веб-страница, на которую я пытаюсь получить доступ, отправляет обратно ошибку 403. Я ожидаю, что WebViewClient получит ошибку, но это не так. Не предполагается ли ошибка?

engine.setWebViewClient(new WebViewClient() {
        boolean error = false;
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {

            //IT DOESN'T COME HERE even IF SERVER SENDS BACK 403 ERROR
        }
    });

Это похоже на то, что мне нужно прочитать ответ, используя HttpRequest, и проанализировать ответ, чтобы проверить, что происходит. Есть ли другой способ сделать это? Могу ли я проверить заголовки из WebView?

Теги:
http-headers
webview

1 ответ

2
Лучший ответ

Мне пришлось выполнить требование, используя два запроса. Первый запрос для проверки правильности учетных данных и отсутствия ошибки (с использованием HttpURLConnection). Только если ответ в порядке, я загружаю веб-просмотр.

protected Void doInBackground(final String... url) {
        boolean failed = false;
        int error = 0;

        try {
            URL urlToLoad = new URL(url[0]);
            HttpURLConnection conn = (HttpURLConnection) urlToLoad
                    .openConnection();
            int response = conn.getResponseCode();
            if (response != HttpURLConnection.HTTP_OK) {
                error = response;
                failed = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (!failed) {
            webView.loadUrl(url[0]);
        } else {
            handler.post(hideProgressRunnable);
            connecting = false;
            showError(ErrorMap.getErrorForHttpCode(error));
        }
        return null;
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню