本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
前言
HTTPDNS SDK除了提供了丰富的域名解析的接口之外,还提供了相关的能力。包括:
域名黑名单。详情请查看设置HTTPDNS的域名黑名单。
自定义TTL。详情请查看自定义解析结果TTL。
IP优选。详情请查看启用IP优选。
设置region节点。详情请查看设置region节点。
设置预解析域名
将App使用到的域名预设进来,进行预解析。
setPreResolveHosts
接口定义
void setPreResolveHosts(ArrayList<String> hostList)
void setPreResolveHosts(ArrayList<String> hostList, RequestIpType requestIpType)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
hostList | ArrayList<String> | 是 | 预解析域名列表。如果没有requestIpType参数则默认为RequestIpType.v4。 |
requestIpType | RequestIpType | 否 | 预解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
同步解析域名
使用同步解析接口解析域名,会阻塞当前线程,直到获得有效解析结果并返回。
该接口首先查询缓存,若缓存存在可用的解析结果则立即返回缓存解析结果,若缓存中没有可用的解析结果,则会阻塞当前调用解析的线程并且在工作线程中进行域名解析,等域名解析完成返回解析结果,或达到超时时间返回空值。
同步解析接口,整体的耗时受超时配置控制,如果在超时配置内还没有解析成功,会立即返回空解析结果。
getHttpDnsResultForHostSync
接口定义
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType requestIpType)
2.4.0版本新增方法。
所属类
HttpDnsService
参数定义
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
返回说明
类型 | 说明 |
解析结果。 |
代码示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto);
异步解析域名
使用异步解析接口解析域名,不会阻塞当前线程,解析结果会通过回调的形式返回。
该接口首先查询缓存,若缓存存在可用的解析结果则立即通过回调返回缓存解析结果,若缓存中没有可用的解析结果,则会在工作线程中进行域名解析,等域名解析结束或者达到超时时间再通过回调返回解析结果。
异步解析接口,整体的耗时受超时配置控制,如果在超时配置内还没有解析成功,会立即通过回调返回空解析结果。
getHttpDnsResultForHostAsync
接口定义
void getHttpDnsResultForHostAsync(String host, RequestIpType type, HttpDnsCallback callback)
2.4.0版本新增方法。
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
callback | 是 | 域名解析结果回调接口。 |
代码示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostAsync("www.aliyun.com", RequestIpType.auto, HttpDnsCallback {
httpDnsResult = it
})
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto, new HttpDnsCallback() {
void onHttpDnsCompleted(HTTPDNSResult result) {
}
});
同步非阻塞解析域名
使用同步非阻塞接口解析域名,不会阻塞当前线程,但可能会返回空结果。
该接口仅查询缓存,返回缓存查询的解析结果。若缓存中没有解析结果或者缓存中的解析结果已经TTL过期,则会在工作线程中进行域名解析,解析成功后更新缓存,供下次调用域名解析使用。
getHttpDnsResultForHostSyncNonBlocking
接口定义
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
2.4.0版本新增方法。
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
返回说明
类型 | 说明 |
解析结果。 |
代码示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto);
getIpByHostAsync
同步非阻塞方式进行域名解析,返回单个IPv4地址。
接口定义
String getIpByHostAsync(String host)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String | 解析结果返回的IP是服务端返回的IP数组中的第一个IP,不一定是最优IP。 |
getIPv4ForHostAsync
同步非阻塞方式进行域名解析,返回单个IPv4地址。
接口定义
String getIPv4ForHostAsync(String host)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String | 解析结果返回的IP是服务端返回的IPv4数组中的第一个IP,不一定是最优IP。 |
getIpsByHostAsync
同步非阻塞方式进行域名解析,返回全部IPv4地址。
接口定义
String[] getIpsByHostAsync(String host)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String[] | 全部IPv4地址。 |
getIPv4ListForHostAsync
同步非阻塞方式进行域名解析,返回全部IPv4地址。
接口定义
String[] getIPv4ListForHostAsync(String host)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String[] | 全部IPv4地址。 |
getIPv6ByHostAsync
同步非阻塞方式进行域名解析,返回单个IPv6地址。
接口定义
String getIPv6ByHostAsync(String host)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String | 解析结果返回的IP是服务端返回的IPv6数组中的第一个IP,不一定是最优IP。 |
getIPv6ForHostAsync
同步非阻塞方式进行域名解析,返回单个IPv6地址。
接口定义
String getIPv6ForHostAsync(String host)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String | 解析结果返回的IP是服务端返回的IPv6数组中的第一个IP,不一定是最优IP。 |
getIPv6sByHostAsync
同步非阻塞方式进行域名解析,返回全部IPv6地址。
接口定义
String[] getIPv6sByHostAsync(String host)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String[] | 全部IPv6地址。 |
getIPv6ListForHostASync
同步非阻塞方式进行域名解析,返回全部IPv6地址。
接口定义
String[] getIPv6ListForHostASync(String host)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
String[] | 全部IPv6地址。 |
getAllByHostAsync
同步非阻塞方式进行域名解析,返回全部IPv4和IPv6地址。
接口定义
HTTPDNSResult getAllByHostAsync(String host)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
解析结果。 |
getHttpDnsResultForHostAsync
同步非阻塞方式进行域名解析,返回全部IPv4和IPv6地址。
接口定义
HTTPDNSResult getHttpDnsResultForHostAsync(String host)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
返回说明
类型 | 说明 |
解析结果。 |
getIpsByHostAsync
同步非阻塞方式进行域名解析,返回指定IP类型的全部IP地址。
接口定义
HTTPDNSResult getIpsByHostAsync(String host, RequestIpType requestIpType)
2.3.2版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both |
返回说明
类型 | 说明 |
解析结果。 |
getHttpDnsResultForHostAsync
同步非阻塞方式进行域名解析,返回指定IP类型的全部IP地址。
接口定义
HTTPDNSResult getHttpDnsResultForHostAsync(String host, RequestIpType type)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both |
返回说明
类型 | 说明 |
解析结果。 |
清空指定域名缓存
使用阿里云域名解析服务的用户,调用该接口主动清除本地缓存,可实现秒级域名配置生效。 例如:假设域名xxx.com,解析IP地址为ip1, 当ip1遭受攻击,需要将流量迁移至ip2,实现流程如下:
首先,用户在云解析控制台将域名对应IP修改为ip2,此时在HTTPDNS服务端会立即获取到此变更信息,并清除服务端该域名的ip1缓存。
用户手动调用此接口,清空xxx.com域名的本地缓存。
App端清空缓存后的下一次请求,会使得服务端重新请求权威服务器,获取最新解析IP地址ip2,从而使前端解析结果立即生效为ip2。
cleanHostCache
接口定义
void cleanHostCache(ArrayList<String> hosts)
2.0.3版本新增的方法。
清空操作会同步清空内存缓存和本地缓存。
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
hosts | ArrayList<String> | 是 | 需要清除的host域名数组。如果需要清空全部数据,传null或者空数组即可。 |