全部產品
Search
文件中心

HTTPDNS:自訂解析介面

更新時間:Sep 27, 2025

前言

本文檔所有介面,需結合編寫自訂解析函數,用於基礎解析情境不滿足需求時,進行自訂解析使用。

每個自訂網域名解析的請求都需要攜帶的通用參數可以通過設定自訂解析全域參數來配置。

自訂解析同步解析介面

使用自訂同步解析介面解析網域名稱,會阻塞當前線程,直到獲得有效解析結果並返回。

該介面首先會使用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(accountID)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSync(host, RequestIpType.auto, params, cacheKey)
HttpDnsService httpdns = HttpDns.getService(accountID);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync(host, 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(accountID)
dnsService?.getHttpDnsResultForHostAsync(host, RequestIpType.auto, params, cacheKey, HttpDnsCallback {
    httpDnsResult = it
})
HttpDnsService httpdns = HttpDns.getService(accountID);
httpdns.getHttpDnsResultForHostAsync(host, RequestIpType.auto, params, cacheKey, new HttpDnsCallback() {
  void onHttpDnsCompleted(HTTPDNSResult result) {
  }      
});

自訂解析同步非阻塞解析介面

使用自訂同步非阻塞介面解析網域名稱,不會阻塞當前線程,但可能會返回空結果。

該介面僅查詢快取,返回緩衝查詢的解析結果。若緩衝中沒有解析結果或者緩衝中的解析結果已經TTL到期,則會在背景工作執行緒中進行網域名稱解析,解析成功後更新緩衝,供下次調用網域名稱解析使用。

getHttpDnsResultForHostSyncNonBlocking

介面定義

HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(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(accountID)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.auto, params, cacheKey)
HttpDnsService httpdns = HttpDns.getService(accountID);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.auto, params, cacheKey);