前言
本文檔所有介面,需結合編寫自訂解析函數,用於基礎解析情境不滿足需求時,進行自訂解析使用。
每個自訂網域名解析的請求都需要攜帶的通用參數可以通過設定自訂解析全域參數來配置。
自訂解析同步解析介面
使用自訂同步解析介面解析網域名稱,會阻塞當前線程,直到獲得有效解析結果並返回。
該介面首先會使用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(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:
|
params | Map<String, String> | 是 | 解析網域名稱攜帶的額外參數,對應服務端自訂解析函數中的event.parameters參數。 |
cacheKey | String | 是 | 網域名稱對應的本機快取key,如果額外參數變更導致需要重新去服務端解析,則需要變更cacheKey。 |
callback | 是 | 解析結果回調類。 |
程式碼範例
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:
|
params | Map<String, String> | 是 | 解析網域名稱攜帶的額外參數,對應服務端自訂解析函數中的event.parameters參數。 |
cacheKey | String | 是 | 網域名稱對應的本機快取key,如果額外參數變更導致需要重新去服務端解析,則需要變更cacheKey。 |
返回說明
類型 | 說明 |
解析結果。 |
範例程式碼
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);