Pour mon application, Transdroid, je me connecte à des serveurs distants via HTTP et éventuellement de manière sécurisée via HTTPS. Pour ces connexions en HTTPS avec le HttpClient je suis en utilisant un custom socket SSL usine de mise en œuvre pour s'assurer des certificats auto-signés sont de travail. En gros, j'accepte tout et d'ignorer tout de la vérification des certificats.
Cela a très bien marché pendant un certain temps maintenant, mais il n'a plus de travail pour Android 2.2 FroYo. Lorsque vous essayez de vous connecter, il sera de retour une exception:
java.io.IOException: SSL handshake failure: I/O error during system call, Broken pipe
Voici comment j'initialise 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 peux utiliser un FakeSocketFactory et FakeTrustManager, dont la source peut être trouvé ici: http://code.google.com/p/transdroid/source/browse/#svn/trunk/src/org/transdroid/util
Encore une fois, je ne comprends pas pourquoi il a soudainement cessé de travailler, ou même ce que l'erreur "Broken pipe" signifie. J'ai vu des messages sur Twitter, Seesmic et Twidroid échouer avec SSL activé sur FroYo, mais suis pas sûr si c'est lié.
Merci pour toute les directions/help!