Я использую 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 .
Любая помощь приветствуется.