Я исследовал, исследовал и исследовал это, пока не стал серым и лысым. Как я могу получить webview для работы на сайте, которому требуется HTTP-аутентификация по https-соединению на уровне api 8 +
У меня есть следующий код
String email = Util.getEmail(this);
String pwd = Util.getPassword(this);
webview.getSettings().setJavaScriptEnabled(true);
webview.setHttpAuthUsernamePassword(Config.SERVER_BASE_URL, "Application", email, pwd);
// webview.setWebViewClient(new MobileWebViewClient(this));
webview.loadUrl(url);
Как вы можете видеть, у меня был клиент веб-представления (теперь прокомментирован), который переопределяет метод onReceivedHttpAuthRequest, который выглядит как этот
@Override
public void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm){
String email = Util.getEmail(wvContext);
String pwd = Util.getPassword(wvContext);
if(!pwd.equalsIgnoreCase("-1") && !pwd.equalsIgnoreCase("-1")){
handler.proceed(email, pwd);
}
}
Это использовалось без webview.setHttpAuthUsernamePassword и отлично работает, за исключением того, что это означает, что на сайт выдается 2 запроса. Первый получает 401, а затем клиент использует материал авторизации. Это нормально для небольшого количества веб-сайта трафик, но вдвое сокращает объем трафика (в настоящее время составляет в среднем 49 запросов p/m) - это название игры прямо сейчас!
Я прочитал, что я могу предварительно предоставить учетные данные, используя
webview.setHttpAuthUsernamePassword(Config.SERVER_BASE_URL, "Application", email, pwd);
Однако это просто приводит к Http Basic: Access denied errors Постоянная URL-адрес базы сервера - это доменное имя для сайта, то есть https://example.com (без страницы) фактический URL-адрес https://example.com/some_pages. Не имеет значения, использую ли я полный URL-адрес или домен. Я проверил область, и у меня это правильно, и я использовал только пустые строки, содержащие только электронную почту и пароль. Может ли это быть связано с тем, что сайт использует https? Мой код, похоже, отлично работает в моей dev-блоке без https, но это может быть красная селедка.!
Единственные проблемы с переполнением стека, которые, похоже, соответствуют моим требованиям, не получили принятых ответов, и документы не помогают мне видеть.
У меня теперь есть такая большая вмятина в голове, ударяя ее о кирпичную стену, о которой я думаю о том, чтобы получить квадратную шляпу.
Пожалуйста, если кто-нибудь может дать мне решение этого, я буду навсегда в вашем долге! Я мог бы даже отправить вам по электронной почте KitKat