本文檔所有介面,需結合編寫自訂解析函數,用於基礎解析情境不滿足需求時,進行自訂解析使用。
自訂解析非同步解析介面
使用非同步解析介面,首先查詢快取,若存在則返回緩衝結果,若不存在返回null並且進行非同步網域名稱解析更新緩衝。自訂解析介面可上傳給服務端額外參數,用於服務端做判斷,返回不同解析結果。
SDK V1.3.1及以上版本支援。
該介面只解析和返回ipv4類型IP,為相容舊版本保留介面。
介面定義
HTTPDNSResult getIpsByHostAsync(String host, Map<String,String> params, String cacheKey);
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 網域名稱(如www.aliyun.com) |
params | Map<String,String> | 否 | 上傳的額外參數,對應服務端自訂解析函數中的event.parameters參數 |
cacheKey | String | 否 | 網域名稱對應的本機快取key,傳入與上次不同的key值時,不返回上次解析結果 |
程式碼範例
// httpdns為初始化擷取的服務執行個體
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
HTTPDNSResult result = httpdns.getIpsByHostAsync("www.aliyun.com", map, "測試");
自訂解析非同步解析介面-指定IP類型
使用非同步解析介面,首先查詢快取,若存在則返回緩衝結果,若不存在返回null並且進行非同步網域名稱解析更新緩衝。自訂解析介面可上傳給服務端額外參數,用於服務端做判斷,返回不同解析結果。
此功能僅適用於SDK V2.0.0及以上版本。
介面定義
HTTPDNSResult getIpsByHostAsync(String host, RequestIpType requestIpType, Map<String,String> params, String cacheKey);
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 網域名稱(如www.aliyun.com) |
requestIpType | RequestIpType(enum類) | 是 | 指定解析IP的類型:
|
params | Map<String,String> | 否 | 上傳的額外參數,對應服務端自訂解析函數中的event.parameters參數 |
cacheKey | String | 否 | 網域名稱對應的緩衝key,傳入與上次不同的key值時,不返回上次解析結果 |
程式碼範例
// httpdns為初始化擷取的服務執行個體
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
HTTPDNSResult result = httpdns.getIpsByHostAsync("www.aliyun.com", RequestIpType.v4, map, "測試");
非同步解析介面-全部解析
使用非同步解析介面,首先查詢快取,若存在則返回緩衝結果,若不存在返回null並且進行非同步網域名稱解析更新緩衝。該介面不上傳額外參數,也無緩衝key,並解析ipv4和ipv6兩種類型,用於無任何條件的自訂解析。
此功能僅適用於SDK V2.0.0及以上版本。
介面定義
HTTPDNSResult getAllByHostAsync(String host);
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 網域名稱(如www.aliyun.com) |
程式碼範例
// httpdns為初始化擷取的服務執行個體
HTTPDNSResult result = httpdns.getAllByHostAsync("www.aliyun.com");
設定自訂解析全域參數
該全域參數不影響非同步解析介面的額外參數設定,會和解析介面的額外參數合并。
此功能僅適用於SDK V1.3.1及以上版本。
介面定義
void setSdnsGlobalParams(Map<String,String> params);
參數說明
參數 | 類型 | 是否必填 | 說明 |
params | Map<String,String> | 是 | 上傳的額外參數,對應服務端自訂解析函數中的event.parameters參數。 |
程式碼範例
// httpdns為初始化擷取的服務執行個體
Map<String, String> map = new HashMap<>();
map.put("scale", "scale");
httpdns.setSdnsGlobalParams(map);
清除自訂解析全域參數
此功能僅適用於SDK V1.3.1及以上版本。
介面定義
void clearSdnsGlobalParams();
程式碼範例
// httpdns為初始化擷取的服務執行個體
httpdns.clearSdnsGlobalParams();
HTTPDNSResult類參數說明
此功能僅適用於SDK V1.3.1及以上版本。
參數 | 類型 | 擷取方式 | 說明 |
host | String | getHost() | 解析的對應網域名稱(如www.aliyun.com) |
ips | String[] | getIps() | ipv4解析結果 |
ipv6s | String[] | getIpv6s() | ipv6解析結果 |
extra | Map<String,String> | getExtras() | 服務端返回的額外參數 |
expired | boolean | getExpired() | 當前解析結果是否到期 |
fromDB | boolean | getFromDB() | 當前解析結果是否來自持久化緩衝 |
程式碼範例
// httpdns為初始化擷取的服務執行個體
HTTPDNSResult result = httpdns.getAllByHostAsync("www.aliyun.com");
String host = result.getHost();
String[] ips = result.getIps();
String[] ipv6s = result.getIpv6s();
Map<String,String> map = result.getExtras();
boolean expired = result.getExpired();
boolean fromDB = result.getFromDB();