如何使用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分钟内超时。
最佳答案
不要绕开您的正当问题,但博客文章Android's HTTP Clients建议使用HttpURLConnection进行新开发。您是否考虑过切换API?