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:

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.

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 .

  • Obteniendo java.io.IOException: se ha producido un error en la lectura, el socket puede estar cerrado o el tiempo de espera en BluetoothSocket.connect ()
  • Uso de certificados de cliente / servidor para la autenticación de dos vías socket SSL en Android
  • Carga dibujable desde la tarjeta sd
  • ANDROID: Facebook y el navegador Abierto dentro de mi aplicación, no en su propia
  • No se puede vincular a cocos2dx utilizando eclipse para android en OSX
  • Uso de los detalles de autenticación de Dropbox guardados en Android
  • java.lang.SecurityException: No se permite enlazar con el servicio Intent (HTC voice dicttation)
  • Ocultar el texto en un botón en android?
  • Inicializar una aplicación de Android
  • Calcular el número de semanas en un año determinado
  • Referencia de valores de una matriz en java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.