全部产品
Search
文档中心

HTTPDNS:IPv4异步解析接口

更新时间:Oct 08, 2022

异步解析接口

使用异步解析接口,首先查询缓存,若存在则返回缓存结果,若不存在返回null并且进行异步域名解析更新缓存。

注意

  • 解析结果返回的IP是服务端返回的IP数组中的第一个IP,不一定是最优IP。

  • 如果您需要返回的IP是最优IP,您可以使用启用IP优选接口,使返回的IP为最优IP。

接口定义

String getIpByHostAsync(String host);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

代码示例

// httpdns为初始化获取的服务实例
String ip = httpdns.getIpByHostAsync("www.aliyun.com");

异步解析获取解析结果列表

异步解析接口,获取IP列表,首先查询缓存,若存在则返回结果,若不存在返回长度为0的String数组并且进行异步域名解析更新缓存。

注意

  • 返回的IP列表就是服务端返回的列表,在服务端的权重是一样,也就是没有优先顺序。

  • 若接口返回长度为0的String数组,为避免影响业务请降级到Local DNS解析策略。

接口定义

String[] getIpsByHostAsync(String host);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

代码示例

// httpdns为初始化获取的服务实例
String[] ips = httpdns.getIpsByHostAsync("www.aliyun.com");

异步解析获取解析结果

异步解析接口,获取解析结果,可以指定要解析的IP类型,首先查询缓存,若存在则返回结果,若不存在返回内容为空的结果对象,并且进行异步域名解析更新缓存。

注意

  • 若接口返回空内容的结果对象,为避免影响业务请降级到Local DNS解析策略。

  • 该接口也可以用于解析IPv6。

接口定义

HTTPDNSResult getIpsByHostAsync(String host, RequestIpType type);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

type

RequestIpType

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

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

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

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

  • auto:需要解析和当前网络环境匹配的IP类型。

代码示例

// httpdns为初始化获取的服务实例
HTTPDNSResult result = httpdns.getIpsByHostAsync("www.aliyun.com", RequestIpType.both);
// 获取IPv4的解析结果
result.getIps();
// 获取IPv6的解析结果
result.getIpv6s();

启用IP优选

设置IP探测列表,设置该接口后,如果解析了相应的域名,则SDK会对返回的IP进行IP探测,对返回的列表进行动态排序,以保证第一个IP是可用性较好的IP。

注意

SDK 1.1.5及以上版本支持。

接口定义

 void setIPProbeList(List<IPProbeItem> ipProbeList);

参数说明

参数

类型

是否必填

说明

ipProbeList

List<IPProbeItem>

设置IP探测列表,设置该接口后,如果解析了相应的域名,则SDK会对返回的IP进行IP探测,对返回的列表进行动态排序,以保证第一个IP是可用性较好的IP。

代码示例

// httpdns为初始化获取的服务实例
ArrayList<IPProbeItem> list = new ArrayList<IPProbeItem>();
list.add(new IPProbeItem("www.aliyun.com", 8080));
httpdns.setIPProbeList(list);

对指定域名进行探测

指定要探测的域名及探测时的端口号。

注意

SDK V1.1.5及以上版本支持。

接口定义

 public IPProbeItem(String hostname, int port)

参数说明

参数

类型

是否必填

说明

hostname

String

域名(如www.aliyun.com)

port

int

端口(如8080)

代码示例

IPProbeItem probeItem = new IPProbeItem("www.aliyun.com", 8080);