ThreadSafeClientConnectionManagetを使用して読み書きをブロックするためのSSLソケットのタイムアウトを設定するにはどうすればよいですか? SSLソケットの読み書き中にネットワーク接続が失われると、Android OS 2.2および2.3デバイスで15分のタイムアウトが発生することがわかりました。Android:ThreadSafeClientConnectionManagerを使用して読み書きをブロックするためのSSLソケットのタイムアウトを設定するにはどうすればよいですか?
私は自分のHttpClientで次のタイムアウトを設定します。
mParams = new BasicHttpParams();
HttpProtocolParams.setVersion(mParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(mParams, "UTF-8");
HttpProtocolParams.setUserAgent(mParams, USER_AGENT);
HttpConnectionParams.setConnectionTimeout(mParams, TIME_OUT);
HttpConnectionParams.setSoTimeout(mParams, TIME_OUT);
ConnManagerParams.setTimeout(mParams, TIME_OUT);
final SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme(HTTP_SCHEME, PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme(HTTPS_SCHEME, SSLSocketFactory.getSocketFactory(), 443));
final ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(mParams, registry);
mClient = new DefaultHttpClient(manager, mParams);
私は、ファイルの実体でHTTP PUTリクエストを実行するために、クライアントを使用しています。途中で飛行機モードをオンにした場合、15〜30秒待ってから飛行機モードをオフにすると、ソケットは読み込みまたは書き込みのいずれかでスタックされ、15分間はタイムアウトしません。
Froyoをサポートする必要があり、そのリリースでHttpURLConnectionに問題があるため、APIを切り替えることはありません。さらに、ICSまでHttpURLConnectionに相当するものを持たないApacheクライアントの周りには、大量のカスタムコードがあります。しかし、とにかく提案ありがとう。 – Todd