java - 在移动数据连接上,HttpUrlConnection为什么会抛出 SSLException?

  显示原文与译文双语对照的内容
0 0

当使用Android HttpUrlConnection库做一个HTTPS请求,有时我会看到以下所throw异常:

javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x5c1b18a0: I/O error during system call, Connection reset by peer
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
...

深入后有点问题,我懂得了

  • 一切都正常运行在wifi连接时
  • 时,就会throw该异常的设备位于移动数据连接
  • 通过wifi进行一个HTTPS后首先,通过移动数据连接选项能够很好一阵子
  • 问题似乎发生在少数特定移动运营商的

有什么会发生? 是一些移动运营商的干扰HTTPS流量?

时间:原作者:1个回答

0 0

Short 回答:

事实证明一些移动运营商将返回一个IP地址的DNS查找而应失败为非顺差。 服务器的应用程序是连接到将失败要解决有时,和运营商会尝试提供支持通过提供页的类似网站。


Longer回答

我的应用程序是连接到的主机名服务器有时会无法解决。 这通常会引发 UnknownHostException以指示DNS失败。 我期望这些发生有时,和app对其进行处理。 。 SSLException是一只畸形猫。

载体上拦截失败DNS查找,导航网站网页浏览器非顺差主机将显示一页" 搜索结果",旨在帮助你查找所需的内容。 ( 一些DLS/cable ISP的这样做,太。) 为app发出一个HTTPS请求,但是,这会打断SSL握手由于远程主机不同于该应用是搞不懂你

根本原因是쳣 DNS服务器将返回一个非顺差主机错误在其中一台服务器my应用程序是使用。 通过wifi连接似乎更可靠( 由于其他同名的怪,把自己的DNS服务器) 。 通过wifi连接将允许DNS条目要缓存,因此暂时屏蔽该问题可以稍后当我们连接通过移动数据连接。 不过大部分时间,移动运营商会截取失败DNS查找和引导我们到意外Hostname,这就导致SSL握手失败。

原作者:
...