自定义解析接口
本文档所有接口,需结合编写自定义解析函数,用于基础解析场景不满足需求时,进行自定义解析使用。
自定义解析异步解析接口
使用异步解析接口,首先查询缓存,若存在则返回缓存结果,若不存在返回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的类型:
|
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();