Diferencia entre ConnectionTimeoutException y SSLException con el mensaje "Tiempo de espera de conexión agotado"
En mi código de Android (con Apache HTTP Client) ya he configurado los siguientes parámetros:
HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS); HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS);
Me estoy conectando a un servicio web HTTPS. En redes lentas, obtengo una ConnectionTimeoutException
después de esperar 30 segundos (y lo intento de nuevo); Pero hay "pocos" casos (sin patrón que pude observar), obtengo cualquiera de estos:
- Nombre del paquete Java / Android, por ejemplo, código
- Detección de colisiones Pixel-Perfect Android
- Java.lang.ClassCastException: android.widget.LinearLayout no se puede convertir en android.widget.ListView
- Uso de serviceloader en android
- Cambiar el tamaño de una vista de imagen en android
Javax.net.ssl.SSLException: Error de lectura: ssl = 0xe71160: Error de E / S durante la llamada al sistema, Tiempo de espera de la conexión javax.net.ssl.SSLException: Error de escritura: ssl = 0xe71160: Error de E / tubo
Conseguí este código de SO, que todavía está bajo prueba:
registry.register(new Scheme("https", SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443));
Puedo entender el tiempo de espera del establecimiento de conexión y el tiempo de espera del socket – mi pregunta es ¿realmente necesitamos este tercer tiempo de espera para SSL? ¿En qué se diferencia el propósito de SO_TIMEOUT?
PS: Estas excepciones parecen venir en la imagen al leer / escribir datos – que debería haber resultado en la pérdida de datos – pero no puedo observar que tampoco.
- Android CookieManager
- Decodificar archivo de imagen SVG (codificado como base64) en java
- Uso de OpenGL para reemplazar Canvas - Android
- Android JSONObject: agrega Array al método put
- Emulador de Android: No se puede iniciar la cámara web para capturar imágenes en el emulador
- Cómo eliminar el ". 0" en un número entero cuando se utiliza doble en java?
- Java.lang.RuntimeException: Error al entregar el resultado ResultInfo {who = null, request = 1, result = -1, data = intention} a la actividad
- ¿Tenemos alguna herramienta para convertir el diseño xml de Android a archivos .java?
La diferencia es que ConnectionTimeoutException
produce cuando no se puede establecer ninguna conexión en absoluto. Eso significa que el servidor no es accesible en absoluto.
La SSLException
produce cuando ya se estableció la conexión pero durante el protocolo de enlace SSL la conexión se agota. Dado que el tiempo de espera se produce después de que se inició el apretón de manos SSL, la SSLException
se SSLException
como una excepción de nivel superior.
Puede intentar comprobar si se introduce ConnectionTimeoutException
como causa de la SSLException
.
- Cordova PushPlugin – No se puede recibir notificación de GCM en android si la aplicación no se está ejecutando
- Cómo pasar el parámetro al método java desde c # en JNI