Невозможно получить обратный вызов для ошибки HTTP 401 с помощью Webview Android - PullRequest
0 голосов
/ 08 июня 2018

Я использую Webview с WebViewClient для загрузки URL, который требует аутентификации.Я использую onReceivedHttpAuthRequest метод WebViewClient для установки аутентификации для каждого запроса.

@Override
    public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
        handler.proceed("username", "password");
    }

Это нормально работает для URL, которым требуется только базовая аутентификация.

Однаконекоторые URL-адреса в моем приложении требуют входа в систему с дополнительными заголовками в запросе.Таким образом, для такого рода запросов базовой аутентификации недостаточно, и сервер выдаст ошибку аутентификации 401.

Так что для этого сценария мне нужно перехватить ошибку 401 и перейти пользователя на экран входа в систему.Начиная с зефира, WebViewClient предоставил ниже метод для обработки такого типа ошибок HTTP.

    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
        if(errorResponse.getStatusCode() ==401){
            // Code to navigate user to Login Screen.
        }
    }

Но я не нашел никаких условий для устройств ниже зефира, чтобы обрабатывать или получать обратный вызов для такого401 ошибка. Также не работает метод обратного вызова onReceivedError .

Любая помощь приветствуется.

...