Android コード (Apache HTTP クライアントを使用) では、次のパラメーターを既に設定しています。
HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS);
HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS);
HTTPS Web サービスに接続しています。遅いネットワークでは、ConnectionTimeoutException
予想される 30 秒後にエラーが発生します (その後、再試行します)。しかし、「少数」のケースがあり(観察できるパターンはありません)、次のいずれかが得られます。
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xe71160: システム コール中の I/O エラー、接続タイムアウト javax.net.ssl.SSLException: 書き込みエラー: ssl=0xe71160: システム コール中の I/O エラー、破損パイプ
私はまだテスト中のSOからこのコードを取得しました:
registry.register(new Scheme("https",
SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443));
接続確立のタイムアウトとソケットのタイムアウトを理解できます - 私の質問は、SSL にこの 3 番目のタイムアウトが本当に必要ですか? 目的は SO_TIMEOUT とどう違うのですか?
PS:これらの例外は、データの読み取り/書き込み中に発生するようです-これによりデータが失われるはずです-しかし、私はそれも観察できません。