本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
前言
本文档所有接口,需结合编写自定义解析函数,用于基础解析场景不满足需求时,进行自定义解析使用。
每个自定义域名解析的请求都需要携带的通用参数可以通过设置自定义解析全局参数来配置。
自定义解析同步解析接口
使用自定义同步解析接口解析域名,会阻塞当前线程,直到获得有效解析结果并返回。
该接口首先会使用cacheKey查询缓存,若缓存存在可用的解析结果则立即返回缓存解析结果,若缓存中没有可用的解析结果,则会阻塞当前调用解析的线程并且在工作线程中进行域名解析,等域名解析完成返回解析结果,或达到超时时间返回空值。
同步解析接口,整体的耗时受超时配置控制,如果在超时配置内还没有解析成功,会立即返回空解析结果。
getHttpDnsResultForHostSync
接口定义
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType requestIpType, Map<String, String> params, String cacheKey)
2.4.0版本新增的方法。
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |
代码示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto, params, cacheKey)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto, params, cacheKey);
自定义解析异步解析接口
使用自定义异步解析接口解析域名,不会阻塞当前线程,解析结果会通过回调的形式返回。
该接口首先查询缓存,若缓存存在可用的解析结果则立即通过回调返回缓存解析结果,若缓存中没有可用的解析结果,则会在工作线程中进行域名解析,等域名解析结束或者达到超时时间再通过回调返回解析结果。
同步解析接口,解析的整体耗时受超时配置控制,如果在超时配置内还没有解析成功,会立即返回空解析结果。
getHttpDnsResultForHostAsync
接口定义
void getHttpDnsResultForHostAsync(String host, RequestIpType requestIpType, Map<String, String> params, String cacheKey, HttpDnsCallback callback)
2.4.0版本新增的方法。
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
callback | 是 | 解析结果回调类。 |
代码示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostAsync("www.aliyun.com", RequestIpType.auto, params, cacheKey, HttpDnsCallback {
httpDnsResult = it
})
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto, params, cacheKey, new HttpDnsCallback() {
void onHttpDnsCompleted(HTTPDNSResult result) {
}
});
自定义解析同步非阻塞解析接口
使用自定义同步非阻塞接口解析域名,不会阻塞当前线程,但可能会返回空结果。
该接口仅查询缓存,返回缓存查询的解析结果。若缓存中没有解析结果或者缓存中的解析结果已经TTL过期,则会在工作线程中进行域名解析,解析成功后更新缓存,供下次调用域名解析使用。
getHttpDnsResultForHostSyncNonBlocking
接口定义
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType requestIpType, Map<String, String> params, String cacheKey)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both 枚举类型,代表解析哪种类型的IP:
|
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |
示例代码
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto, params, cacheKey)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto, params, cacheKey);
getIpsByHostAsync
使用同步非阻塞方式,自定义解析IPv4地址。
接口定义
HTTPDNSResult getIpsByHostAsync(String host, Map<String,String> params, String cacheKey)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType requestIpType, Map params, String cacheKey)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |
getHttpDnsResultForHostAsync
使用同步非阻塞方式,自定义解析IPv4地址。
接口定义
HTTPDNSResult getHttpDnsResultForHostAsync(String host, Map<String, String> params, String cacheKey);
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType requestIpType, Map params, String cacheKey)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |
getIpsByHostAsync
使用同步非阻塞方式,自定义解析指定IP类型的IP地址。
接口说明
HTTPDNSResult getIpsByHostAsync(String host, RequestIpType requestIpType, Map<String,String> params, String cacheKey)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType requestIpType, Map params, String cacheKey)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both |
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |
getHttpDnsResultForHostAsync
接口说明
HTTPDNSResult getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey)
2.4.0版本废弃了该方法,后续版本可能会被移除。请使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType requestIpType, Map params, String cacheKey)
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP类型。推荐使用RequestIpType.both |
params | Map<String, String> | 是 | 解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。 |
cacheKey | String | 是 | 域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。 |
返回说明
类型 | 说明 |
解析结果。 |