Pour mon application, Transdroid, je me connecte à des serveurs distants via HTTP et éventuellement en toute sécurité via HTTPS. Pour ces connexions HTTPS avec le HttpClient, j'utilise une implémentation de fabrique de socket SSL personnalisée pour m'assurer que les certificats auto-signés fonctionnent. Fondamentalement, j'accepte tout et ignore chaque vérification de n'importe quel certificat.La gestion SSL personnalisée a cessé de fonctionner sur Android 2.2 FroYo
Cela a fonctionné très bien depuis un certain temps maintenant, mais il ne fonctionne plus pour Android 2.2 FroYo. Lorsque vous essayez de vous connecter, il renvoie une exception:
java.io.IOException: SSL handshake failure: I/O error during system call, Broken pipe
Voici comment j'initialiser le 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);
-je utiliser un FakeSocketFactory et FakeTrustManager, dont la source se trouve here . Encore une fois, je ne comprends pas pourquoi il a soudainement cessé de fonctionner, ou même ce que l'erreur «Broken pipe» signifie. J'ai vu des messages sur Twitter que Seesmic et Twidroid échouent avec SSL activé sur FroYo, mais je ne sais pas si c'est lié.
Merci pour toute direction/aide!
je le même problème. Merci beaucoup pour cette solution rapide et facile. –
Ce correctif ne m'a pas résolu le problème en lui-même - j'ai dû augmenter la priorité du thread dans lequel la connexion de socket était établie à THREAD_PRIORITY_URGENT_AUDIO (suivi de la redéfinition de la priorité sur THREAD_PRIORITY_MORE_FAVORABLE une fois la connexion établie établi). Dans ce cas précis, je suspecte une animation utilise trop de CPU :-( – tonys
comment faites-vous tony? – Mikey