自定义解析接口

本文档所有接口,需结合编写自定义解析函数,用于基础解析场景不满足需求时,进行自定义解析使用。

自定义解析异步解析接口

使用异步解析接口,首先查询缓存,若存在则返回缓存结果,若不存在返回null并且进行异步域名解析更新缓存。自定义解析接口可上传给服务端额外参数,用于服务端做判断,返回不同解析结果。

注意

  • SDK V1.3.1及以上版本支持。

  • 该接口只解析和返回ipv4类型IP,为兼容旧版本保留接口。

接口定义

HTTPDNSResult getIpsByHostAsync(String host, Map<String,String> params, String cacheKey);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

params

Map<String,String>

上传的额外参数,对应服务端自定义解析函数中的event.parameters参数

cacheKey

String

域名对应的本地缓存key,传入与上次不同的key值时,不返回上次解析结果

代码示例

// httpdns为初始化获取的服务实例
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
HTTPDNSResult result = httpdns.getIpsByHostAsync("www.aliyun.com", map, "测试");

自定义解析异步解析接口-指定IP类型

使用异步解析接口,首先查询缓存,若存在则返回缓存结果,若不存在返回null并且进行异步域名解析更新缓存。自定义解析接口可上传给服务端额外参数,用于服务端做判断,返回不同解析结果。

注意

此功能仅适用于SDK V2.0.0及以上版本。

接口定义

HTTPDNSResult getIpsByHostAsync(String host, RequestIpType requestIpType, Map<String,String> params, String cacheKey);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

requestIpType

RequestIpType(enum类)

指定解析IP的类型:

  • v4:ipv4类型

  • v6:ipv6类型

  • both:两种类型都进行解析

params

Map<String,String>

上传的额外参数,对应服务端自定义解析函数中的event.parameters参数

cacheKey

String

域名对应的缓存key,传入与上次不同的key值时,不返回上次解析结果

代码示例

// httpdns为初始化获取的服务实例
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
HTTPDNSResult result = httpdns.getIpsByHostAsync("www.aliyun.com", RequestIpType.v4, map, "测试");

异步解析接口-全部解析

使用异步解析接口,首先查询缓存,若存在则返回缓存结果,若不存在返回null并且进行异步域名解析更新缓存。该接口不上传额外参数,也无缓存key,并解析ipv4和ipv6两种类型,用于无任何条件的自定义解析。

注意

  • 此功能仅适用于SDK V2.0.0及以上版本。

接口定义

HTTPDNSResult getAllByHostAsync(String host);

参数说明

参数

类型

是否必填

说明

host

String

域名(如www.aliyun.com)

代码示例

// httpdns为初始化获取的服务实例
HTTPDNSResult result = httpdns.getAllByHostAsync("www.aliyun.com");

设置自定义解析全局参数

该全局参数不影响异步解析接口的额外参数设置,会和解析接口的额外参数合并。

注意

  • 此功能仅适用于SDK V1.3.1及以上版本。

接口定义

void setSdnsGlobalParams(Map<String,String> params);

参数说明

参数

类型

是否必填

说明

params

Map<String,String>

上传的额外参数,对应服务端自定义解析函数中的event.parameters参数。

代码示例

// httpdns为初始化获取的服务实例
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
httpdns.setSdnsGlobalParams(map);

清除自定义解析全局参数

注意

  • 此功能仅适用于SDK V1.3.1及以上版本。

接口定义

void clearSdnsGlobalParams();

代码示例

// httpdns为初始化获取的服务实例
httpdns.clearSdnsGlobalParams();

HTTPDNSResult类参数说明

注意

  • 此功能仅适用于SDK V1.3.1及以上版本。

参数

类型

获取方式

说明

host

String

getHost()

解析的对应域名(如www.aliyun.com)

ips

String[]

getIps()

ipv4解析结果

ipv6s

String[]

getIpv6s()

ipv6解析结果

extra

Map<String,String>

getExtras()

服务端返回的额外参数

expired

boolean

getExpired()

当前解析结果是否过期

fromDB

boolean

getFromDB()

当前解析结果是否来自持久化缓存

代码示例

// httpdns为初始化获取的服务实例
HTTPDNSResult result = httpdns.getAllByHostAsync("www.aliyun.com");
String host = result.getHost();
String[] ips = result.getIps();
String[] ipv6s = result.getIpv6s();
Map<String,String> map = result.getExtras();
boolean expired = result.getExpired();
boolean fromDB = result.getFromDB();
阿里云首页 移动研发平台 相关技术圈