Android WebView no carga una URL HTTPS

public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance); setContentView(R.layout.show_voucher); webView=(WebView)findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(true); String url ="https://www.paymeon.com/Vouchers/?v=%C80%8D%B1x%D9%CFqh%FA%84%C35%0A%1F%CE&iv=%25%EE%BEi%F4%DAT%E1" //webView.loadUrl(url); // Not Working... Showing blank webView.loadUrl("http://www.yahoo.com"); // its working } 

Cuando intento cargar una URL en el WebBView sólo muestra una pantalla en blanco. Si carga Google.com o yahoo.com está funcionando bien.

Por favor, visite este enlace:

Agregue este método de sobrescritura a su implementación de WebViewClient. Tendrá que compilarlo con Android SDK 2.2 (API nivel 8) o posterior. El método aparece en el SDK público a partir de 2.2 (API nivel 8), pero lo hemos probado en dispositivos que ejecutan 2.1, 1.6 y 1.5 y funciona en esos dispositivos también (así que obviamente el comportamiento ha estado allí todo el tiempo).

  @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); // Ignore SSL certificate errors } 

Esto te ayudara.

Por respuesta correcta por fargth, sigue una pequeña muestra de código que podría ayudar.

Primero, cree una clase que extienda WebViewClient y que esté configurada para ignorar los errores de SSL:

 // SSL Error Tolerant Web View Client private class SSLTolerentWebViewClient extends WebViewClient { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); // Ignore SSL certificate errors } } 

A continuación, con su objeto de vista web (iniciado en el método OnCreate ()), configure su cliente de vista web como una instancia de la clase override:

  mWebView.setWebViewClient( new SSLTolerentWebViewClient() ); 

Para manejar correctamente la validación de certificados SSL y evitar el rechazo de aplicaciones de Google según la nueva Política de seguridad, cambie su código para invocar SslErrorHandler.proceed () siempre que el certificado presentado por el servidor cumpla con sus expectativas e invoque SslErrorHandler.cancel () de lo contrario.

Por ejemplo, agrego un cuadro de diálogo de alerta para que el usuario haya confirmado y parece que Google ya no muestra advertencia.

  @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); String message = "SSL Certificate error."; switch (error.getPrimaryError()) { case SslError.SSL_UNTRUSTED: message = "The certificate authority is not trusted."; break; case SslError.SSL_EXPIRED: message = "The certificate has expired."; break; case SslError.SSL_IDMISMATCH: message = "The certificate Hostname mismatch."; break; case SslError.SSL_NOTYETVALID: message = "The certificate is not yet valid."; break; } message += " Do you want to continue anyway?"; builder.setTitle("SSL Certificate Error"); builder.setMessage(message); builder.setPositiveButton("continue", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.proceed(); } }); builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.cancel(); } }); final AlertDialog dialog = builder.create(); dialog.show(); } 

Después de que esto cambie no mostrará advertencia.

Quite el código abajo que funcionará

  super.onReceivedSslError(view, handler, error); 

He seguido las respuestas anteriores, pero aún así parece que no está funcionando para mí por debajo del código hizo un truco para mí al integrar gatways de pago que son generalmente las solicitudes https:

 public class MainActivity extends Activity { WebView webView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.webView1); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); webView.setWebViewClient(new MyWebViewClient()); String postData = "amount=1000&firstname=mtetno&[email protected]&phone=2145635784&productinfo=android&surl=success.php" + "&furl=failure.php&lastname=qwerty&curl=dsdsd.com&address1=dsdsds&address2=dfdfd&city=dsdsds&state=dfdfdfd&" + "country=fdfdf&zipcode=123456&udf1=dsdsds&udf2=fsdfdsf&udf3=jhghjg&udf4=fdfd&udf5=fdfdf&pg=dfdf"; webView.postUrl( "http://host/payment.php", EncodingUtils.getBytes(postData, "BASE64")); } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { webView.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } } } 

Por encima del código está haciendo una solicitud de publicación en webview y redirigir a la pasarela de pago.

Configuración de settings.setDomStorageEnabled(true); Hizo un truco para mí Espero que esto ayude.

Para manejar urls SSL el método onReceivedSslError () de la clase WebViewClient, este es un ejemplo:

  webview.setWebViewClient(new WebViewClient() { ... ... ... @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { String message = "SSL Certificate error."; switch (error.getPrimaryError()) { case SslError.SSL_UNTRUSTED: message = "The certificate authority is not trusted."; break; case SslError.SSL_EXPIRED: message = "The certificate has expired."; break; case SslError.SSL_IDMISMATCH: message = "The certificate Hostname mismatch."; break; case SslError.SSL_NOTYETVALID: message = "The certificate is not yet valid."; break; } message += "\"SSL Certificate Error\" Do you want to continue anyway?.. YES"; handler.proceed(); } }); 

Puede comprobar mi ejemplo completo aquí: https://github.com/Jorgesys/Android-WebView-Logging

Introduzca aquí la descripción de la imagen

  • ¿Qué significa "bloquear todas las solicitudes de carga de red"?
  • ¿Cómo puedo panoramizar una webview en google glass
  • Personajes extraños en html webview
  • ¿Por qué no puedo establecer currentTime y la duración es igual a 0 en HTML AudioElement en Android WebView?
  • Cómo deshabilitar el cuadro de diálogo "Guardar contraseña" en un WebView de Android?
  • cómo leer el archivo .webarchive en android
  • fije la dirección del texto en WebView a RTL
  • Android webview.loadUrl no cargará otra página web
  • El teclado flexible de Android oculta las entradas de CordovaWebView cuando está en pantalla completa
  • Cómo recuperar y modificar el contenido HTML de WebView con Http Post
  • ¿AlertDialog admite WebView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.