问题描述
使用HTTPDNS的移动端SDK时,返回的域名解析IP地址为空。
问题原因
可能导致此问题的原因如下:
HTTPDNS控制台中未添加需要解析的域名。
已启用自定义解析功能,添加自定义调度的域名未正确配置FC函数。
域名解析首先查询缓存,若缓存存在可用的解析结果则立即返回SDK本地缓存解析结果,若缓存中没有可用的解析结果则会返回空值。
说明首次调用异步请求域名解析接口时,因延迟可能返回空值,再次调用可获取结果。
移动端代码中启用了预解析接口,但是预解析列表中的域名与HTTPDNS控制台中的域名不一致,导致解析失败。
移动端代码中未开启鉴权, 代码示例如下:
Android:
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID);
iOS:
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:accountID];
Harmony:
httpdns.configService(accountID, {
context: this.context,
});
同时HTTPDNS控制台里未启用非鉴权接口访问权限,截图如下:
导致无权限访问HTTPDNS的接口。
TTL较短,缓存的IP过期,导致返回的结果为空。该问题属于正常情况,再次调用即可获取到最新的IP地址。
移动端SDK集成时存在配置错误。
解决方案
请参考下列步骤进行排查:
步骤一:通过控制台中的免费在线体验工具进行测试
登录HTTPDNS控制台。
在左侧导航栏单击免费在线体验,输入您需要解析的域名,检查是否有返回结果。
无返回结果 请在您的域名管理平台,对域名添加解析记录,确保免费在线体验工具可以返回域名的解析地址。
有返回结果 请继续下一步排查。
步骤二:检查控制台中的域名列表
登录HTTPDNS控制台。
在左侧导航栏单击域名列表,检查您需要解析的域名是否在域名列表中。
不存在 请单击添加域名,输入您需要解析的域名,单击确认。更多有关如何添加域名的信息,请参见域名管理。
存在 请继续下一步排查。
步骤三:检查代码是否启用预解析接口
检查移动端代码中是否启用了预解析接口:
未启用 建议您启用该接口,以便提前获取解析,减少后续解析域名时请求的时延。
已启用 检查预解析域名列表中配置的域名是否与控制台中已经添加的域名一致。如果不一致,请进行添加或者修改。如果一致,请继续下一步检查。
步骤四:检查端侧代码是否启用鉴权
Android:
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID,secretKey);
iOS:
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:accountID secretKey];
Harmony:
httpdns.configService(accountID, {
context: this.context,
secretKey:this.secretKey
});
步骤五:检查HTTPDNS控制台是否启用了鉴权接口:
未启用 请确认在HTTPDNS控制台开启了非鉴权接口访问权限,然后重试。
说明说明:推荐您启用鉴权接口,以增加安全性。启用鉴权接口后,请关闭非鉴权接口访问权限。
已启用 确保鉴权接口中的secretKey准确无误,然后继续下一步检查。
步骤六:通过官方Demo进行对比测试
请使用官方Demo进行对比测试,如果官方Demo可以正常获取解析地址,请检查您在集成移动端SDK时的配置。
步骤七:EMAS HTTPDNS控制台自定义解析检查域名配置函数
对应域名右侧点击查看配置。
点击配置的函数名称。
点击函数计算FC->服务列表->函数管理。
点击函数名称
测试函数配置入参,点击测试函数,观察执行结果是否正常。
相关文档
适用于
HTTPDNS