HTTPDNS Android SDK拿到IP为空的排查步骤
如果首次使用HTTPNDNS域名解析不成功,可以根据下面的步骤来进行排查:
1.首先排查在控制台上是否添加了需要解析的域名,使用HTTPDNS解析域名请求示例时:https://203.107.1.33/{Your account ID}/d?host=www.aliyun.com(尽量使用控制台申请的Account ID,否则解析可能为空)。
2.如果不使用secretKey,需要在控制台的”鉴权设置”中开启“非鉴权接口访问权限”。
3.检查网络是否能正常访问,以及请求的URL是否设置了HOST请求字段。
// 比如您要访问http://www.aliyun.com/,假设www.aliyun.com域名的解析结果是140.205.XX.XX。<br/>
// 一般情况下,使用IP的方式进行访问时,需要设置HTTP请求头的HOST字段为原来的域名。<br/>
String fullPath = "http://140.205.XX.XX/";<br/>
String host = "www.aliyun.com";<br/>
URL url = new URL(fullPath);<br/>
HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br/>
// 设置HTTP请求头HOST字段为www.aliyun.com<br/>
conn.setRequestProperty("Host", host);
4.查看是否调用异步请求接口,如果初次调用异步请求接口返回为空是正常的,需要延迟一段时间,再次调用才能拿到IP。
Android异步接口:<br/>
String getIpByHostAsync(String host);<br/>
String[] getIpsByHostAsync(String host);
5.如果还是为空,检查当前是否为调试状态,有时调试状态+ttl较短也会导致IP过期,返回IP结果为空。
6.如果同时使用了友盟SDK,需要将HTTPDNS SDK的初始化放到友盟SDK初始化前面,后续会优化该场景共同使用问题。
7.使用Demo运行查看,比对结果。
Demo参考:
若上述步骤仍未能定位问题,可以通过技术支持获取帮助。