2012-02-08 77 views
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分鐘。

回答

1

不要偏離你的合法性問題,但博客文章Android's HTTP Clients建議使用HttpURLConnection進行新的開發。您是否考慮過切換API?

+0

由於我們需要支持Froyo,並且該版本的HttpURLConnection存在問題,所以我們不會切換API。另外,我們在Apache客戶端周圍有大量的自定義代碼,它們在HttpURLConnection中沒有相同的內容,直到ICS。無論如何感謝您的建議。 – Todd 2012-03-10 01:38:02

相關問題