我遇到了这样一种情况,即我在一个公司网络上,该网络有一个无线接入点,需要安全登录才能访问网络。大约 30 分钟的空闲时间后,它将提示用户重新进行身份验证。
在我的应用程序(使用改造 + okhttp)中,“您的会话已超时”表现为“java.io.IOException:未验证主机名'example.com'”异常。更仔细的检查表明,“example.com”正在根据无线接入点的证书进行验证,与证书关联的唯一有效域是接入点的域 (securelogin.arubanetworks.com)。这就是触发异常的原因。如果我离开应用程序,启动浏览器,使用接入点重新进行身份验证并返回应用程序,我仍然会收到相同的主机名未验证问题。这给我留下了两个问题:
1) 除了等待和处理 IOException 之外,有没有更好的方法来检测这种超时情况?
2) 一旦会话超时,我似乎无法让 http 客户端停止尝试根据接入点证书验证主机名。一旦用户重新验证(通过浏览器)而不重新启动应用程序,有没有办法恢复?