Win*_*Win 6 java https android http apache-httpclient-4.x
在我的Android代码上(使用Apache HTTP Client)我已经设置了以下参数:
HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS);
HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS);
Run Code Online (Sandbox Code Playgroud)
我正在连接到HTTPS网络服务.在慢速网络上,我得到一个ConnectionTimeoutException预期的30秒(然后我重试); 但是有"很少"的情况(没有我能观察到的模式),我得到以下任何一种:
javax.net.ssl.SSLException:读取错误:ssl = 0xe71160:系统调用期间的I/O错误,连接超时javax.net.ssl.SSLException:写入错误:ssl = 0xe71160:系统调用期间的I/O错误,Broken管
我从SO获得了这个代码,它仍在测试中:
registry.register(new Scheme("https",
SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443));
Run Code Online (Sandbox Code Playgroud)
我可以理解连接建立超时和套接字超时 - 我的查询是否真的需要SSL的第3次超时?目的与SO_TIMEOUT有何不同?
PS:这些例外情况似乎是在读取/写入数据时出现的 - 这应该导致数据丢失 - 但我也观察不到.
不同之处在于,ConnectionTimeoutException当根本无法建立连接时会发生这种情况。这意味着根本无法访问服务器。
SSLException当连接已建立但在 SSL 握手期间连接超时时,就会发生这种情况。因为超时发生在 SSL 握手开始之后,所以SSLException会作为更高级别的异常抛出。
您可以尝试检查是否ConnectionTimeoutException输入了 a 作为 的原因SSLException。
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |