私のアプリであるTransdroidの場合、HTTP経由でリモートサーバーに接続し、オプションでHTTPS経由で安全に接続しています。HttpClientとのこれらのHTTPS接続では、カスタムSSLソケットファクトリ実装を使用して、自己署名証明書が機能していることを確認しています。基本的に、私はすべてを受け入れ、証明書のすべてのチェックを無視します。
これはしばらくの間正常に機能していましたが、Android2.2FroYoでは機能しなくなりました。接続しようとすると、例外が返されます。
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を利用しています。これらのソースはここにあります。
繰り返しになりますが、なぜ突然動作が停止したのか、「パイプが壊れた」というエラーが何を意味するのかさえわかりません。TwitterでSeesmicとTwidroidがFroYoでもSSLを有効にすると失敗するというメッセージを見たことがありますが、それが関連しているかどうかはわかりません。
指示/ヘルプをありがとう!