Android:如何使用ThreadSafeClientConnectionManager为阻塞读/写设置SSL套接字超时?

时间:2012-02-08 23:22:15

标签: java android

如何使用ThreadSafeClientConnectionManaget为阻塞读/写设置SSL套接字超时?我发现在读取或写入SSL套接字时丢失网络连接会导致Android OS 2.2和2.3设备超时15分钟。

我在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 个答案:

答案 0 :(得分:1)

不要偏离您的合法问题,但博文Android's HTTP Clients建议使用HttpURLConnection进行新的开发。您是否考虑过切换API?