本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
前言
HTTPDNS SDK除了提供了豐富的域名解析的接口之外,還提供了相關的能力。包括:
域名黑名單。詳情請查看設置HTTPDNS的域名黑名單。
自定義TTL。詳情請查看自定義解析結果TTL。
IP優選。詳情請查看啟用IP優選。
設置region節點。詳情請查看設置region節點。
設置預解析域名
將App使用到的域名預設進來,進行預解析。
setPreResolveHosts
接口定義
void setPreResolveHosts(ArrayList<String> hostList)
void setPreResolveHosts(ArrayList<String> hostList, RequestIpType requestIpType)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
hostList | ArrayList<String> | 是 | 預解析域名列表。如果沒有requestIpType參數則默認為RequestIpType.v4。 |
requestIpType | RequestIpType | 否 | 預解析的IP類型。推薦使用RequestIpType.both 枚舉類型,代表解析哪種類型的IP:
|
同步解析域名
使用同步解析接口解析域名,會阻塞當前線程,直到獲得有效解析結果并返回。
該接口首先查詢緩存,若緩存存在可用的解析結果則立即返回緩存解析結果,若緩存中沒有可用的解析結果,則會阻塞當前調用解析的線程并且在工作線程中進行域名解析,等域名解析完成返回解析結果,或達到超時時間返回空值。
同步解析接口,整體的耗時受超時配置控制,如果在超時配置內還沒有解析成功,會立即返回空解析結果。
getHttpDnsResultForHostSync
接口定義
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType requestIpType)
2.4.0版本新增方法。
所屬類
HttpDnsService
參數定義
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP類型。推薦使用RequestIpType.both 枚舉類型,代表解析哪種類型的IP:
|
返回說明
類型 | 說明 |
解析結果。 |
代碼示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto);
異步解析域名
使用異步解析接口解析域名,不會阻塞當前線程,解析結果會通過回調的形式返回。
該接口首先查詢緩存,若緩存存在可用的解析結果則立即通過回調返回緩存解析結果,若緩存中沒有可用的解析結果,則會在工作線程中進行域名解析,等域名解析結束或者達到超時時間再通過回調返回解析結果。
異步解析接口,整體的耗時受超時配置控制,如果在超時配置內還沒有解析成功,會立即通過回調返回空解析結果。
getHttpDnsResultForHostAsync
接口定義
void getHttpDnsResultForHostAsync(String host, RequestIpType type, HttpDnsCallback callback)
2.4.0版本新增方法。
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP類型。推薦使用RequestIpType.both 枚舉類型,代表解析哪種類型的IP:
|
callback | 是 | 域名解析結果回調接口。 |
代碼示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostAsync("www.aliyun.com", RequestIpType.auto, HttpDnsCallback {
httpDnsResult = it
})
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto, new HttpDnsCallback() {
void onHttpDnsCompleted(HTTPDNSResult result) {
}
});
同步非阻塞解析域名
使用同步非阻塞接口解析域名,不會阻塞當前線程,但可能會返回空結果。
該接口僅查詢緩存,返回緩存查詢的解析結果。若緩存中沒有解析結果或者緩存中的解析結果已經TTL過期,則會在工作線程中進行域名解析,解析成功后更新緩存,供下次調用域名解析使用。
getHttpDnsResultForHostSyncNonBlocking
接口定義
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
2.4.0版本新增方法。
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP類型。推薦使用RequestIpType.both 枚舉類型,代表解析哪種類型的IP:
|
返回說明
類型 | 說明 |
解析結果。 |
代碼示例
val httpdns = HttpDns.getService(applicationContext, accountID, secretKey)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto)
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto);
getIpByHostAsync
同步非阻塞方式進行域名解析,返回單個IPv4地址。
接口定義
String getIpByHostAsync(String host)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String | 解析結果返回的IP是服務端返回的IP數組中的第一個IP,不一定是最優IP。 |
getIPv4ForHostAsync
同步非阻塞方式進行域名解析,返回單個IPv4地址。
接口定義
String getIPv4ForHostAsync(String host)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String | 解析結果返回的IP是服務端返回的IPv4數組中的第一個IP,不一定是最優IP。 |
getIpsByHostAsync
同步非阻塞方式進行域名解析,返回全部IPv4地址。
接口定義
String[] getIpsByHostAsync(String host)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String[] | 全部IPv4地址。 |
getIPv4ListForHostAsync
同步非阻塞方式進行域名解析,返回全部IPv4地址。
接口定義
String[] getIPv4ListForHostAsync(String host)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String[] | 全部IPv4地址。 |
getIPv6ByHostAsync
同步非阻塞方式進行域名解析,返回單個IPv6地址。
接口定義
String getIPv6ByHostAsync(String host)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String | 解析結果返回的IP是服務端返回的IPv6數組中的第一個IP,不一定是最優IP。 |
getIPv6ForHostAsync
同步非阻塞方式進行域名解析,返回單個IPv6地址。
接口定義
String getIPv6ForHostAsync(String host)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String | 解析結果返回的IP是服務端返回的IPv6數組中的第一個IP,不一定是最優IP。 |
getIPv6sByHostAsync
同步非阻塞方式進行域名解析,返回全部IPv6地址。
接口定義
String[] getIPv6sByHostAsync(String host)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String[] | 全部IPv6地址。 |
getIPv6ListForHostASync
同步非阻塞方式進行域名解析,返回全部IPv6地址。
接口定義
String[] getIPv6ListForHostASync(String host)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
String[] | 全部IPv6地址。 |
getAllByHostAsync
同步非阻塞方式進行域名解析,返回全部IPv4和IPv6地址。
接口定義
HTTPDNSResult getAllByHostAsync(String host)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
解析結果。 |
getHttpDnsResultForHostAsync
同步非阻塞方式進行域名解析,返回全部IPv4和IPv6地址。
接口定義
HTTPDNSResult getHttpDnsResultForHostAsync(String host)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
返回說明
類型 | 說明 |
解析結果。 |
getIpsByHostAsync
同步非阻塞方式進行域名解析,返回指定IP類型的全部IP地址。
接口定義
HTTPDNSResult getIpsByHostAsync(String host, RequestIpType requestIpType)
2.3.2版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP類型。推薦使用RequestIpType.both |
返回說明
類型 | 說明 |
解析結果。 |
getHttpDnsResultForHostAsync
同步非阻塞方式進行域名解析,返回指定IP類型的全部IP地址。
接口定義
HTTPDNSResult getHttpDnsResultForHostAsync(String host, RequestIpType type)
2.4.0版本廢棄了該方法,后續版本可能會被移除。請使用HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析域名。 |
requestIpType | RequestIpType | 是 | 待解析的IP類型。推薦使用RequestIpType.both |
返回說明
類型 | 說明 |
解析結果。 |
清空指定域名緩存
使用阿里云域名解析服務的用戶,調用該接口主動清除本地緩存,可實現秒級域名配置生效。 例如:假設域名xxx.com,解析IP地址為ip1, 當ip1遭受攻擊,需要將流量遷移至ip2,實現流程如下:
首先,用戶在云解析控制臺將域名對應IP修改為ip2,此時在HTTPDNS服務端會立即獲取到此變更信息,并清除服務端該域名的ip1緩存。
用戶手動調用此接口,清空xxx.com域名的本地緩存。
App端清空緩存后的下一次請求,會使得服務端重新請求權威服務器,獲取最新解析IP地址ip2,從而使前端解析結果立即生效為ip2。
cleanHostCache
接口定義
void cleanHostCache(ArrayList<String> hosts)
2.0.3版本新增的方法。
清空操作會同步清空內存緩存和本地緩存。
所屬類
HttpDnsService
參數說明
參數 | 類型 | 是否必填 | 說明 |
hosts | ArrayList<String> | 是 | 需要清除的host域名數組。如果需要清空全部數據,傳null或者空數組即可。 |