He investigado, investigado e investigado esto hasta que me he puesto gris y calvo. ¿Cómo diablos puedo obtener una vista web para trabajar para un sitio que necesita la autenticación básica HTTP sobre una conexión HTTPS en el nivel de la API 8+vista web de Android con conexión https y autenticación básica. ¿Cómo funciona esto?
tengo el siguiente código
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);
Como se puede ver que hice tener un cliente de vista web (ahora comentada) que reemplaza el método onReceivedHttpAuthRequest que se parece a este
@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);
}
}
este fue utilizado sin el webview.setHttpAuthUsernamePassword y funciona bien, excepto que significa 2 solicitudes se emiten a la w ebsite: el primero obtiene un 401 y luego el cliente entra en acción con la autorización Esto está bien para una pequeña cantidad de tráfico del sitio web, pero la mitad del tráfico (actualmente promediando 49 solicitudes p/m) es el nombre del juego en este momento !
leí que puedo preventivamente suministrar las credenciales utilizando
webview.setHttpAuthUsernamePassword(Config.SERVER_BASE_URL, "Application", email, pwd);
Sin embargo esto sólo resulta en Http básica: Acceso denegado errores La constante URL base del servidor es el nombre de dominio del sitio web es decir https://example.com (sin la página) la url real es https://example.com/some_pages. No importa si utilizo la URL completa o el dominio. He comprobado el dominio y lo he corregido y he utilizado solo cadenas vacías que proporcionan solo correo electrónico y contraseña. ¿Podría ser esto algo relacionado con el hecho de que el sitio usa https? Mi código parece funcionar bien en mi cuadro de desarrollo sin https, pero eso puede ser una pista falsa.
Las únicas preguntas de desbordamiento de pila que parecen cubrir mis requisitos no tienen respuestas aceptadas y los documentos no son de ayuda que pueda ver.
Ahora tengo una abolladura tan grande en mi cabeza por golpearla contra una pared de ladrillo que estoy pensando en conseguir un sombrero cuadrado.
Por favor, si alguien puede darme la solución a esto, ¡estaré siempre en deuda con usted! Incluso podría enviarle un correo electrónico a un KitKat
I le [esta pregunta y su respuesta aceptada] (http://stackoverflow.com/questions/1968416/how-to-do-http-authentication-in-android) no resuelve su problema ? –
@aaamos, bien podría resolver mi problema, pero ¿cómo lo aplicaría a un WebView? – jamesc
¿Ha intentado descargar la página web con un httppost y luego suministrarla a una vista web? – Warpzit