通讯异常类问题
问题描述:
集成SDK后发现后台无数据,打开SDK调试Log看到如下提示“发生java.net.UnknownHostException异常”。
集成SDK后发现后台无数据,打开SDK调试Log看到如下提示“发生javax.net.sslHandshakeException异常”。
集成SDK后发现后台无数据,打开SDK调试Log看到如下提示“发生java.net.SocketTimeoutException异常”。
解决方案:
java.net.UnknownHostException异常
在非组件化版本6.1.x系列SDK中,此异常发生时能看到如下log打印:
java.net.UnknownHostException: Unable to resolve host "ulogs.umeng.com": No address associated with hostname或
java.net.UnknownHostException: Unable to resolve host "alog.umengcloud.com": No address associated with hostname此类异常一般可能是如下原因:
设备端使用静态IP,DNS服务器配置错误或DNS服务器故障,导致设备无法正确解析友盟后端域名。
接入一些不安全的Wi-Fi路由器时,可能因为DNS污染或非法运营商DNS劫持导致设备无法正确解析友盟后端域名。
各种负责的网络环境故障导致的一段时间内的DNS服务不可用。
建议用户改用三大运营商“移动数据”网络接入方式测试(“移动数据” 接入方式网络环境相对简单、固定,意外影响因素较少)。查看后台是否能正常接收数据。如果可以正常接收,则确定和SDK无关,需要客户自己解决其网络接入环境的DNS域名解析失败问题。
java.net.sslHandshakeException异常
此类异常一般可能是如下原因:
组件化SDK通过HTTPS协议连接后端,在Android 7.0及以上版本系统中,客户如果使用设备端代理抓包程序(如:Packet Capture等)或者PC端代理抓包软件(如:fiddler、charles)试图抓包,在安装三方代理抓包程序的SSL自签名证书后,因为Android 7.0默认不信任客户后安装的CA(仅信任ROM中预装的CA)。SDK的https通讯代码会产生javax.net.sslHandshakeException异常。Android 6.0及以下版本ROM不会出现此问题。
要解决此问题,需要按照Android官方文档《网络安全性配置》部分,针对用户需要抓包的APP自定义可信CA,将代理抓包程序的CA加入可信CA。具体见如下Android官方说明:https://developer.android.com/training/articles/security-config.html#CustomTrust
java.net.SocketTimeoutException异常
此类异常一般可能是如下原因:
设备端使用静态IP,DNS服务器配置错误或DNS服务器故障,导致设备无法正确解析友盟后端域名。
接入一些不安全的Wi-Fi路由器时,可能因为DNS污染或非法运营商DNS劫持导致设备无法正确解析友盟后端域名。
各种负责的网络环境故障导致的一段时间内的DNS服务不可用。
建议用户改用三大运营商“移动数据”网络接入方式测试(“移动数据” 接入方式网络环境相对简单、固定,意外影响因素较少)。查看后台是否能正常接收数据。如果可以正常接收,则确定和SDK无关,需要客户自己解决其网络接入环境的DNS域名解析失败问题。