本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
前言
本文檔所有接口,需結合編寫自定義解析函數,用于基礎解析場景不滿足需求時,進行自定義解析使用。
每個自定義域名解析的請求都需要攜帶的通用參數可以通過設置自定義解析全局參數來配置。
自定義解析同步解析接口
使用自定義同步解析接口解析域名,會阻塞當前線程,直到獲得有效解析結果并返回。
該接口首先會使用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。 |
返回說明
類型 | 說明 |
解析結果。 |