7
如何使用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。另外,我們在Apache客戶端周圍有大量的自定義代碼,它們在HttpURLConnection中沒有相同的內容,直到ICS。無論如何感謝您的建議。 – Todd 2012-03-10 01:38:02