域名解析接口

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

前言

HTTPDNS SDK除了提供了丰富的域名解析的接口之外,还提供了相关的能力。包括:

设置预解析域名

将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:

  • v4:需要解析的类型为IPv4。

  • v6:需要解析的类型为IPv6。

  • both:需要解析的类型为IPv4和IPv6。

  • auto:SDK内部根据设备当前的网络栈情况判断,默认解析IPv4地址,如果当前网络栈支持IPv6,也会尝试解析IPv6的地址。

同步解析域名

使用同步解析接口解析域名,会阻塞当前线程,直到获得有效解析结果并返回。

该接口首先查询缓存,若缓存存在可用的解析结果则立即返回缓存解析结果,若缓存中没有可用的解析结果,则会阻塞当前调用解析的线程并且在工作线程中进行域名解析,等域名解析完成返回解析结果,或达到超时时间返回空值。

重要

同步解析接口,整体的耗时受超时配置控制,如果在超时配置内还没有解析成功,会立即返回空解析结果。

getHttpDnsResultForHostSync

接口定义

HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType requestIpType)

说明

2.4.0版本新增方法。

所属类

HttpDnsService

参数定义

参数

类型

是否必填

说明

host

String

待解析域名。

requestIpType

RequestIpType

待解析的IP类型。推荐使用RequestIpType.both

枚举类型,代表解析哪种类型的IP:

  • v4:需要解析的类型为IPv4。

  • v6:需要解析的类型为IPv6。

  • both:需要解析的类型为IPv4和IPv6。

  • auto:SDK内部根据设备当前的网络栈情况判断,默认解析IPv4地址,如果当前网络栈支持IPv6,也会尝试解析IPv6的地址。

返回说明

类型

说明

HTTPDNSResult

解析结果。

代码示例

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:

  • v4:需要解析的类型为IPv4。

  • v6:需要解析的类型为IPv6。

  • both:需要解析的类型为IPv4和IPv6。

  • auto:SDK内部根据设备当前的网络栈情况判断,默认解析IPv4地址,如果当前网络栈支持IPv6,也会尝试解析IPv6的地址。

callback

HttpDnsCallback

域名解析结果回调接口。

代码示例

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:

  • v4:需要解析的类型为IPv4。

  • v6:需要解析的类型为IPv6。

  • both:需要解析的类型为IPv4和IPv6。

  • auto:SDK内部根据设备当前的网络栈情况判断,默认解析IPv4地址,如果当前网络栈支持IPv6,也会尝试解析IPv6的地址。

返回说明

类型

说明

HTTPDNSResult

解析结果。

代码示例

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

待解析域名。

返回说明

类型

说明

HTTPDNSResult

解析结果。

getHttpDnsResultForHostAsync

同步非阻塞方式进行域名解析,返回全部IPv4和IPv6地址。

接口定义

HTTPDNSResult getHttpDnsResultForHostAsync(String host)

警告

2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

host

String

待解析域名。

返回说明

类型

说明

HTTPDNSResult

解析结果。

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

返回说明

类型

说明

HTTPDNSResult

解析结果。

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

返回说明

类型

说明

HTTPDNSResult

解析结果。

清空指定域名缓存

使用阿里云域名解析服务的用户,调用该接口主动清除本地缓存,可实现秒级域名配置生效。 例如:假设域名xxx.com,解析IP地址为ip1, 当ip1遭受攻击,需要将流量迁移至ip2,实现流程如下:

  1. 首先,用户在云解析控制台将域名对应IP修改为ip2,此时在HTTPDNS服务端会立即获取到此变更信息,并清除服务端该域名的ip1缓存。

  2. 用户手动调用此接口,清空xxx.com域名的本地缓存。

  3. App端清空缓存后的下一次请求,会使得服务端重新请求权威服务器,获取最新解析IP地址ip2,从而使前端解析结果立即生效为ip2。

cleanHostCache

接口定义

void cleanHostCache(ArrayList<String> hosts)

说明
  • 2.0.3版本新增的方法。

  • 清空操作会同步清空内存缓存和本地缓存。

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

hosts

ArrayList<String>

需要清除的host域名数组。如果需要清空全部数据,传null或者空数组即可。