Я исследовал и исследовал это, пока не стал седым и лысым.Как, черт возьми, заставить веб-просмотр работать на сайте, который нуждается в базовой аутентификации 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 запросов в месяц) это название игрыпрямо сейчас!
Я прочитал, что могу предварительно предоставить учетные данные, используя
webview.setHttpAuthUsernamePassword(Config.SERVER_BASE_URL, "Application", email, pwd);
Однако это просто приводит к Http Basic: ошибки запрещенного доступа Базовая константа URL сервера является доменомназвание сайта, т.е. https://example.com (без страницы), фактический URL-адрес https://example.com/some_pages.Не имеет значения, использую ли я полный URL или домен.Я проверил область, и у меня это правильно, и я использовал только пустые строки, предоставляя только электронную почту и пароль.Может ли это быть связано с тем, что сайт использует https?Кажется, мой код работает нормально на моем устройстве dev без https, но это может быть красная сельдь.!
Единственные вопросы о переполнении стека, которые, как представляется, охватывают мои требования, не получили принятых ответов, и документы не помогают.Я вижу.
Теперь у меня в голове такая большая вмятина от удара о кирпичную стену, что я думаю получить квадратную шляпу.
Пожалуйста, если кто-нибудь может дать мнеРешением этой проблемы я навсегда останусь в вашем долгу!Я мог бы даже отправить вам KitKat по электронной почте