自定义解析接口

重要

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

前言

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

每个自定义域名解析的请求都需要携带的通用参数可以通过设置自定义解析全局参数来配置。

自定义解析同步解析接口

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

该接口首先会使用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:

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

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

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

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

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。

代码示例

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:

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

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

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

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

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

callback

HttpDnsCallback

解析结果回调类。

代码示例

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:

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

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

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

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

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。

示例代码

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)

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

host

String

待解析域名。

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。

getHttpDnsResultForHostAsync

使用同步非阻塞方式,自定义解析IPv4地址。

接口定义

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

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

host

String

待解析域名。

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。

getIpsByHostAsync

使用同步非阻塞方式,自定义解析指定IP类型的IP地址。

接口说明

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

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

host

String

待解析域名。

requestIpType

RequestIpType

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

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。

getHttpDnsResultForHostAsync

接口说明

HTTPDNSResult getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey)

所属类

HttpDnsService

参数说明

参数

类型

是否必填

说明

host

String

待解析域名。

requestIpType

RequestIpType

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

params

Map<String, String>

解析域名携带的额外参数,对应服务端自定义解析函数中的event.parameters参数。

cacheKey

String

域名对应的本地缓存key,如果额外参数变更导致需要重新去服务端解析的话,需要变更cacheKey。

返回说明

类型

说明

HTTPDNSResult

解析结果。