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参考:

若上述步骤仍未能定位问题,可以通过技术支持获取帮助。