Для моего приложения, Transdroid, я подключаюсь к удаленным серверам через HTTP и, при необходимости, через HTTPS.Для этих HTTPS-соединений с HttpClient я использую собственную реализацию фабрики сокетов SSL, чтобы убедиться, что работают самоподписанные сертификаты.По сути, я принимаю все и игнорирую каждую проверку любого сертификата.
Это уже давно работает нормально, но больше не работает для Android 2.2 FroYo.При попытке подключения он выдаст исключение:
java.io.IOException: SSL handshake failure: I/O error during system call, Broken pipe
Вот как я инициализирую HttpClient:
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", new PlainSocketFactory(), 80));
registry.register(new Scheme("https", (trustAll ? new FakeSocketFactory() : SSLSocketFactory.getSocketFactory()), 443));
client = new DefaultHttpClient(new ThreadSafeClientConnManager(httpParams, registry), httpParams);
Я использую FakeSocketFactory и FakeTrustManager, источником которого являетсяможно найти здесь .
Опять же, я не понимаю, почему он внезапно перестал работать или даже что означает ошибка «Сломанная труба».В Твиттере я видел сообщения о том, что Seesmic и Twidroid также не работают с включенным SSL на FroYo, но я не уверен, что это связано.
Спасибо за любые указания / помощь!