Na mojego kodu Android (przy użyciu klienta Apache HTTP) już ustawić następujące parametry:Różnica między ConnectionTimeoutException i SSLException z napisem "Connection timed out"
HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS);
HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS);
Łączę się do HTTPS internetowej serwisu. W wolnych sieciach otrzymuję ConnectionTimeoutException
po oczekiwanych 30 sekundach (i wtedy ponawiam próbę); ale istnieją "kilka" przypadków (bez wzoru mogłem obserwować), pojawia się jeden z nich:
javax.net.ssl.SSLException: Read error: ssl=0xe71160: I/O error during system call, Connection timed out javax.net.ssl.SSLException: Write error: ssl=0xe71160: I/O error during system call, Broken pipe
Mam ten kod z SO, który jest jeszcze w trakcie badania:
registry.register(new Scheme("https",
SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443));
I można zrozumieć limit czasu ustanowienia połączenia i limit czasu na gniazdo - moje pytanie brzmi, czy naprawdę potrzebujemy tego trzeciego limitu czasu dla protokołu SSL? Czym różni się cel od SO_TIMEOUT?
PS: Te wyjątki zdają się pojawiać na obrazie podczas odczytu/zapisu danych - co powinno spowodować utratę danych - ale tego też nie mogę zaobserwować.