开发者社区 问答 正文

HTTPDNS Android sdk拿到ip为空的排查步骤究竟该怎么才是正确的


如果首次使用HTTPNDNS域名解析不成功,可以根据下面的步骤来进行排查:


  • 1.遇到问题可以先通过文档页进行关键字搜索,或者使用云博士检索,一般都能命中相关的疑问。

  • 2.首先排查在控制台上是否添加了需要解析的域名,使用HTTPDNS解析域名请求示例时:http://203.107.1.33/{Youraccount ID}/d?host=www.aliyun.com(尽量使用控制台申请的Account ID,否则解析可能为空)。

  • 3.检查网络是否能正常访问,以及请求的url是否设置了HOST请求字段。
  1.     // 比如您要访问http://www.aliyun.com/,假设www.aliyun.com域名的解析结果是140.205.62.8。<br/>
  2.     // 一般情况下,使用IP的方式进行访问时,需要设置HTTP请求头的HOST字段为原来的域名。<br/>
  3.     String fullPath = "http://140.205.62.8/";<br/>
  4.     String host = "www.aliyun.com";<br/>
  5.     URL url = new URL(fullPath);<br/>
  6.     HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br/>
  7.     // 设置HTTP请求头HOST字段为www.aliyun.com<br/>
  8.     conn.setRequestProperty("Host", host);

  • 4.查看是否调用异步请求接口,如果初次调用异步请求接口返回为空是正常的,需要延迟一段时间,再次调用才能拿到IP。
    Android异步接口:
    1.   String getIpByHostAsync(String host);<br/>
    2.   String[] getIpsByHostAsync(String host);

  • 5.如果还是为空,检查当前是否为调试状态,有时调试状态+ttl较短也会导致IP过期,返回IP结果为空。

  • 6.使用Demo运行查看,比对结果。
    Demo程序

展开
收起
猫饭先生 2017-10-20 14:06:53 2130 分享 版权
阿里云 AI 助理回答

根据您提供的信息,如果首次使用HTTPDNS域名解析不成功,确实可以通过您列出的步骤进行排查。下面是对这些步骤的简要总结和补充说明,结合阿里云产品的实际应用:

  1. 查阅文档与云博士

    • 首先,访问阿里云官方文档中心或使用云博士智能助手进行问题搜索。输入关键词如“HTTPDNS解析失败”等,查找是否有相关的解决方案或已知问题公告。
  2. 检查控制台配置

    • 确认在阿里云的HTTPDNS控制台上已经正确添加了需要解析的域名。未添加的域名无法通过HTTPDNS服务解析。
  3. 验证请求格式与Account ID

    • 使用正确的Account ID替换示例中的{Youraccount ID}部分,并确保请求URL格式无误。如果不确定Account ID,可以在HTTPDNS控制台找到。
  4. 网络与HOST字段检查

    • 确保客户端网络畅通,且在发送HTTP请求时正确设置了HOST头,指向目标域名。这一步是关键,因为HTTPDNS直接返回IP,但HTTP协议要求HOST头来确定最终访问的域名。
  5. 异步接口调用注意事项

    • 如果使用的是Android平台的异步接口(如getIpByHostAsync),初次调用可能返回空值,这是正常的处理逻辑。按照文档建议,应等待一段时间后再次调用尝试获取IP地址。
  6. 调试状态与TTL影响

    • 检查是否处于调试模式,因为在某些调试环境下,DNS记录的TTL(生存时间)可能会被设置得很短,导致解析结果迅速过期。如果是这种情况,调整为生产环境或适当延长TTL。
  7. 运行Demo程序验证

    • 最后,利用HTTPDNS提供的Demo程序进行测试。Demo通常包含了基本的使用场景和错误处理逻辑,可以帮助确认是否为代码实现问题,还是服务端配置问题。

如果以上步骤均未能解决问题,建议直接联系阿里云客服或提交工单,提供详细的错误信息和操作日志,以便获得更专业的技术支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答