本文檔詳細介紹Java SDK提供的API介面。
一、基礎配置介面
1.1 初始化配置
初始化 HTTPDNS 服務配置,在調用其他介面前必須先完成初始化。
介面定義
static void init(String accountId, InitConfig config)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
accountId | String | 是 | 系統分配的 Account ID,可在 EMAS 控制台擷取 |
config | InitConfig | 是 | 初始化設定物件 |
程式碼範例
InitConfig config = new InitConfig.Builder()
.setSecretKey("your-secret-key")
.setEnableHttps(true)
.setTimeoutMillis(2000)
.setEnableExpiredIp(true)
.build();
HttpDnsClient.init("your-account-id", config);1.2 擷取服務執行個體
擷取 HTTPDNS 用戶端執行個體,用於後續的網域名稱解析操作。
介面定義
static HttpDnsClient getClient(String accountId)
static HttpDnsClient getClient(String accountId, String secretKey)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
accountId | String | 是 | 系統分配的 Account ID |
secretKey | String | 否 | 鑒權密鑰 |
返回說明
類型 | 說明 |
HttpDnsClient | HTTPDNS 用戶端執行個體 |
程式碼範例
HttpDnsClient client = HttpDnsClient.getClient("your-account-id");1.3 InitConfig 配置項
通過 InitConfig.Builder 構建初始化配置。
setSecretKey
設定 HTTPDNS 解析過程中加簽時使用的密鑰。
設定密鑰後,SDK 內部向服務端發起請求時,會對請求進行簽名,協助 HTTPDNS 服務端對解析請求進行身份認證和防篡改,進而提升 SDK 與服務端的互動安全性。
介面定義
InitConfig.Builder setSecretKey(String secretKey)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
secretKey | String | 是 | 加簽密鑰 |
setAesSecretKey
設定 HTTPDNS 解析過程中加密時使用的密鑰。
設定加密金鑰後,SDK 內部向服務端發起請求時,請求參數和響應結果將會使用 AES 演算法進行加密。使用加密能力可以獲得更高的安全性,但在計費邏輯上也存在差異。關於計費邏輯可參考產品計費。
介面定義
InitConfig.Builder setAesSecretKey(String aesSecretKey)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
aesSecretKey | String | 是 | 加密金鑰 |
setEnableHttps
HTTPDNS SDK 進行網域名稱解析時,預設是通過 HTTP 協議發起解析請求,如果需要使用 HTTPS 協議發起解析請求,需要配置使用 HTTPS 協議進行網域名稱解析。
使用 HTTPS 請求將會獲得更高的安全性,但也要關注 HTTP 和 HTTPS 兩種方式在計費上的不同。關於計費邏輯可參考產品計費。
使用 HTTPS 請求是否還需要加密:兩者工作在不同層次。HTTPS 協議保障傳輸層安全,但通過抓包方式仍可以查看參數和響應細節。AES 加密保障 HTTPDNS 業務層安全,即使抓包也無法看到明文內容。因此,可以按需求決定是否都啟用。
介面定義
InitConfig.Builder setEnableHttps(boolean enableHttps)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
enableHttps | boolean | 是 | 設定是否使用 HTTPS 協議解析網域名稱。true:開啟 HTTPS 解析;false:關閉 HTTPS 解析 |
setTimeoutMillis
設定網域名稱解析逾時時間,預設為 2000ms。
介面定義
InitConfig.Builder setTimeoutMillis(int timeoutMillis)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
timeoutMillis | int | 是 | 設定網域名稱解析逾時時間,時間單位為毫秒。預設 2000ms,最大 5000ms |
setEnableExpiredIp
遵循 DNS 協議,按照 TTL 緩衝網域名稱解析結果,從而提升應用在發起網路請求時擷取 IP 的效率。當緩衝到期後,若應用調用解析介面擷取 IP,此時會有不同情況:
如果應用調用的是同步非阻塞介面,因為緩衝已到期,但 SDK 又無法立即從服務端獲得新的解析結果,為了不阻塞線程,該介面將返回空結果,需要調用方做降級到 LocalDNS 解析的處理。
如果應用調用的是同步介面或非同步介面,則 SDK 會發起解析請求從服務端擷取新的解析,這個過程需要一定時間,則同步介面會阻塞線程直到獲得新的解析結果,非同步介面將在獲得新的解析結果後才回調。
SDK 提供設定選項,允許複用到期 IP,設定為 true 後,則上述兩種情況,雖然緩衝的 IP 到期了,但介面仍然可以立即返回這個到期的 IP,從而減少 DNS 環節處理時間,提升網路請求效能。同時,SDK 發現該 IP 到期,返回後,也會立即啟動非同步線程對這個網域名稱進行解析,從而擷取新的解析結果。
因此,開啟這個選項的副作用非常小,特別是在所解析網域名稱本身的解析配置不會頻繁變動時(如主站網域名稱、靜態網關網域名稱等)。若網域名稱確實發生解析變更,則開啟該選項也只會影響該網域名稱緩衝到期後的第一個請求,因為 SDK 在被調用時發現 IP 到期,總是會立即發起對這個網域名稱的解析更新。
預設允許。
當設定為 true 時,SDK 在即時返回到期 IP 的同時依然會進行非同步更新以擷取最新的 IP 資訊。
介面定義
InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
enableExpiredIp | boolean | 是 | 設定是否允許返回超過 TTL 的 IP。true:允許返回到期 IP;false:不返回到期 IP |
enableMemoryCache
設定是否啟用記憶體緩衝。
介面定義
InitConfig.Builder enableMemoryCache(boolean enable)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
enable | boolean | 是 | true:啟用記憶體緩衝(預設);false:禁用記憶體緩衝 |
setRegion
如果應用需要在海外環境使用 HTTPDNS,為了提升解析效率,可以主動設定本 SDK 的啟動服務節點。設定節點後,SDK 會使用該節點進行網域名稱解析和進行隨後的調度節點列表更新。
介面定義
InitConfig.Builder setRegion(Region region)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
region | Region | 是 | 服務節點地區枚舉值,用于海外服務地區選取項目。預設時,使用中國內地服務節點 |
setIPRankingList
設定 IP 優選列表。設定該介面後,如果解析了相應的網域名稱,則 SDK 會對返回的 IP 進行 IP 測速,對返回的列表進行動態排序,以保證第一個 IP 是可用性較好的 IP。
僅支援 IPv4 地址的優選。
介面定義
InitConfig.Builder setIPRankingList(List<? extends IPRankingBean> ipRankingList)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
ipRankingList | List<IPRankingBean> | 是 | IP 優選配置列表 |
configCacheTtlChanger
每條解析結果,預設是使用服務端下發的 TTL 來判斷是否到期。如果您需要修改解析結果的 TTL,可以通過此介面進行配置。
介面定義
InitConfig.Builder configCacheTtlChanger(CacheTtlChanger changer)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
changer | CacheTtlChanger | 是 | 自訂 TTL 介面實現 |
setNotUseHttpDnsFilter
如果您需要對特定網域名稱限制不使用 HTTPDNS 去進行網域名稱解析,可以在這個介面裡過濾掉這些網域名稱,被過濾的網域名稱會返回空的解析結果,您需要降級到 LocalDNS 進行網域名稱解析。
介面定義
InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
filter | NotUseHttpDnsFilter | 是 | 配置黑名單策略 |
setSdnsGlobalParams
設定自訂解析(SDNS)全域參數。該全域參數不影響自訂解析介面的額外參數設定,會和自訂解析介面的額外參數合并,每個自訂解析請求都會攜帶這些全域參數。
介面定義
InitConfig.Builder setSdnsGlobalParams(Map<String, String> params)所屬類
InitConfig.Builder
參數說明
參數 | 類型 | 是否必填 | 說明 |
params | Map<String, String> | 是 | 用於自訂解析的全域參數 |
二、網域名稱解析介面
2.1 設定預解析網域名稱
在應用啟動,完成 SDK 初始化後,可以立即調用此介面,設定您後續可能會使用到的熱點網域名稱,以便 SDK 提前解析,減少後續網域名稱解析時請求的時延。
如果是在運行過程中調用,SDK 也會立即解析設定的網域名稱列表中的網域名稱,從而重新整理這些網域名稱的解析結果,記錄到緩衝中。相當於強製做一次更新。通常用於某些業務動作發生之後,希望重新整理當前的網域名稱解析,強制網域名稱重新調度。
基於解析效率和響應速度的平衡考量,SDK 每次向服務端提交的批量解析任務限制為 5 個網域名稱。因此當預解析列表的網域名稱個數超過 5 個時,SDK 會自動分批提交解析。
setPreResolveHosts
介面定義
void setPreResolveHosts(List<String> hostList)
void setPreResolveHosts(List<String> hostList, RequestIpType requestIpType)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
hostList | List<String> | 是 | 預解析網域名稱列表。待解析的網域名稱必須為純網域名稱字串,不可包含協議頭(如 http://)、路徑或者連接埠,否則可能導致解析異常。不支援泛網域名稱 |
requestIpType | RequestIpType | 否 | 預解析的 IP 類型。如果沒有此參數則預設為 RequestIpType.v4 |
程式碼範例
List<String> hosts = Arrays.asList("www.example.com", "api.example.com");
client.setPreResolveHosts(hosts, RequestIpType.both);2.2 同步非阻塞解析
使用同步非阻塞介面解析網域名稱,不會阻塞當前線程,但可能會返回空結果。
該介面僅查詢快取,返回緩衝查詢的解析結果。若緩衝中沒有解析結果或者緩衝中的解析結果已經 TTL 到期,則會在背景工作執行緒中進行網域名稱解析,解析成功後更新緩衝,供下次調用網域名稱解析使用。
getHttpDnsResultForHostSyncNonBlocking
介面定義
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, String clientIp)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, Map<String, String> params, String cacheKey)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析網域名稱 |
type | RequestIpType | 是 | 待解析的 IP 類型。推薦使用 RequestIpType.both |
clientIp | String | 否 | 用戶端 IP,用於服務端情境指定實際用戶端 IP 以擷取更精準的解析結果 |
params | Map<String, String> | 否 | 解析網域名稱攜帶的額外參數,對應服務端自訂解析函數中的 event.parameters 參數 |
cacheKey | String | 否 | 網域名稱對應的本機快取 key。使用 SDNS 時必須傳入非 null 值,如果額外參數變更導致需要重新去服務端解析,則需要變更 cacheKey |
返回說明
類型 | 說明 |
HTTPDNSResult | 解析結果 |
程式碼範例
HTTPDNSResult result = client.getHttpDnsResultForHostSyncNonBlocking(
"www.example.com",
RequestIpType.both
);
if (result != null && result.getIps() != null && result.getIps().length > 0) {
String ip = result.getIps()[0];
}2.3 同步解析
使用同步解析介面解析網域名稱,會阻塞當前線程,直到獲得有效解析結果並返回。
該介面首先查詢快取,若緩衝存在可用的解析結果則立即返回緩衝解析結果,若緩衝中沒有可用的解析結果,則會阻塞當前調用解析的線程並且在背景工作執行緒中進行網域名稱解析,等網域名稱解析完成返回解析結果,或達到逾時時間返回空值。
同步解析介面,整體的耗時受逾時配置控制,如果在逾時配置內還沒有解析成功,會立即返回空解析結果。
getHttpDnsResultForHostSync
介面定義
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, String clientIp)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, Map<String, String> params, String cacheKey)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析網域名稱 |
type | RequestIpType | 是 | 待解析的 IP 類型。推薦使用 RequestIpType.both |
clientIp | String | 否 | 用戶端 IP,用於服務端情境指定實際用戶端 IP |
params | Map<String, String> | 否 | 解析網域名稱攜帶的額外參數,對應服務端自訂解析函數中的 event.parameters 參數 |
cacheKey | String | 否 | 網域名稱對應的本機快取 key。使用 SDNS 時必須傳入非 null 值,如果額外參數變更導致需要重新去服務端解析,則需要變更 cacheKey |
返回說明
類型 | 說明 |
HTTPDNSResult | 解析結果 |
程式碼範例
HTTPDNSResult result = client.getHttpDnsResultForHostSync(
"www.aliyun.com",
RequestIpType.both
);2.4 非同步解析
使用非同步解析介面解析網域名稱,不會阻塞當前線程,解析結果會通過回調的形式返回。
該介面首先查詢快取,若緩衝存在可用的解析結果則立即通過回調返回緩衝解析結果,若緩衝中沒有可用的解析結果,則會在背景工作執行緒中進行網域名稱解析,等網域名稱解析結束或者達到逾時時間再通過回調返回解析結果。
非同步解析介面,整體的耗時受逾時配置控制,如果在逾時配置內還沒有解析成功,會立即通過回調返回空解析結果。
getHttpDnsResultForHostAsync
介面定義
void getHttpDnsResultForHostAsync(String host, RequestIpType type, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, String clientIp, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp, HttpDnsCallback callback)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
host | String | 是 | 待解析網域名稱 |
type | RequestIpType | 是 | 待解析的 IP 類型。推薦使用 RequestIpType.both |
callback | HttpDnsCallback | 是 | 網域名稱解析結果回調介面 |
clientIp | String | 否 | 用戶端 IP,用於服務端情境 |
params | Map<String, String> | 否 | 解析網域名稱攜帶的額外參數,對應服務端自訂解析函數中的 event.parameters 參數 |
cacheKey | String | 否 | 網域名稱對應的本機快取 key。使用 SDNS 時必須傳入非 null 值,如果額外參數變更導致需要重新去服務端解析,則需要變更 cacheKey |
程式碼範例
client.getHttpDnsResultForHostAsync("www.example.com", RequestIpType.both,
new HttpDnsCallback() {
@Override
public void onHttpDnsCompleted(HTTPDNSResult result) {
if (result != null && result.getIps() != null) {
String[] ips = result.getIps();
// 使用解析結果
}
}
});三、緩衝管理介面
3.1 清空指定網域名稱緩衝
使用阿里雲網域名稱解析服務的使用者,調用該介面主動清除本機快取,可實現秒級網域名稱配置生效。
例如:假設網域名稱 xxx.com,解析 IP 位址為 ip1,當 ip1 遭受攻擊,需要將流量遷移至 ip2,實現流程如下:
首先,使用者在雲解析控制台將網域名稱對應 IP 修改為 ip2,此時在 HTTPDNS 服務端會立即擷取到此變更資訊,並清除服務端該網域名稱的 ip1 緩衝。
使用者手動調用此介面,清空 xxx.com網域名稱的本機快取。
應用端清空緩衝後的下一次請求,會使得服務端重新請求權威伺服器,擷取最新解析 IP 位址 ip2,從而使前端解析結果立即生效為 ip2。
cleanHostCache
介面定義
void cleanHostCache(ArrayList<String> hosts)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
hosts | ArrayList<String> | 是 | 需要清除的 host 網域名稱數組。如果需要清空全部資料,傳 null 或者空數組即可 |
程式碼範例
// 清除指定網域名稱緩衝
ArrayList<String> hosts = new ArrayList<>();
hosts.add("www.example.com");
client.cleanHostCache(hosts);
// 清除所有緩衝
client.cleanHostCache(null);四、排查追蹤介面
4.1 擷取 SessionId
擷取用於追蹤解析過程的 sessionId,若遇到解析異常的情況,通過釘群、工單等方式尋找支援人員協助排查時,需要提供此資訊。
sessionId 為隨機產生,長度為 12 位,應用生命週期內保持不變。
getSessionId
介面定義
String getSessionId()所屬類
HttpDnsClient
返回說明
類型 | 說明 |
String | sessionId |
程式碼範例
String sessionId = client.getSessionId();
System.out.println("SessionId: " + sessionId);4.2 擷取 SDK 版本號碼
擷取當前 SDK 版本號碼。
getSdkVersion
介面定義
String getSdkVersion()所屬類
HttpDnsClient
返回說明
類型 | 說明 |
String | SDK 版本號碼 |
程式碼範例
String version = client.getSdkVersion();
System.out.println("SDK Version: " + version);4.3 日誌控制
HttpDnsLog.enable
設定是否開啟 HTTPDNS 的日誌開關,預設關閉。
介面定義
static void enable(boolean enable)所屬類
HttpDnsLog
參數說明
參數 | 類型 | 是否必填 | 說明 |
enable | boolean | 是 | 是否列印 Log |
程式碼範例
HttpDnsLog.enable(true);HttpDnsLog.setLogger
可以通過設定日誌的回調類來擷取 SDK 內部輸出的日誌。
介面定義
static void setLogger(ILogger logger)所屬類
HttpDnsLog
參數說明
參數 | 類型 | 是否必填 | 說明 |
logger | ILogger | 是 | 設定該介面後,SDK 內部的日誌會通過 ILogger 介面進行回調,便於自行控制日誌的列印和儲存 |
程式碼範例
HttpDnsLog.setLogger(new ILogger() {
@Override
public void log(String msg) {
System.out.println("[HTTPDNS] " + msg);
}
});HttpDnsLog.removeLogger
刪除日誌回調類。
介面定義
static void removeLogger(ILogger logger)所屬類
HttpDnsLog
參數說明
參數 | 類型 | 是否必填 | 說明 |
logger | ILogger | 是 | 之前添加過的 logger |
程式碼範例
HttpDnsLog.removeLogger(myLogger);五、其他介面
5.1 設定 Region
動態更新 region 節點。
setRegion
介面定義
void setRegion(Region region)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
region | Region | 是 | region 為節點,設定海外 region,用于海外服務地區選取項目 |
程式碼範例
client.setRegion(Region.HK); // 切換到香港節點5.2 校正簽章時間
進行該操作後,如果有偏差,每次網路請求都會對裝置進行時間校正;不進行該操作的話將以裝置時間為準。
setAuthCurrentTime
介面定義
void setAuthCurrentTime(long time)所屬類
HttpDnsClient
參數說明
參數 | 類型 | 是否必填 | 說明 |
time | long | 是 | 目前時間的時間戳記(毫秒) |
程式碼範例
HttpDnsClient client = HttpDnsClient.getClient(accountId);
client.setAuthCurrentTime(System.currentTimeMillis());六、常用資料結構
6.1 HTTPDNSResult
網域名稱解析返回的解析結果資料類。
getHost
擷取對應網域名稱。
介面定義
String getHost()返回說明
類型 | 說明 |
String | 網域名稱 |
getIps
擷取解析的 IPv4 地址。
介面定義
String[] getIps()返回說明
類型 | 說明 |
String[] | 網域名稱解析的 IPv4 地址 |
getIpv6s
擷取解析的 IPv6 地址。
介面定義
String[] getIpv6s()返回說明
類型 | 說明 |
String[] | 網域名稱解析的 IPv6 地址 |
getExtras
擷取解析的額外參數,只有自訂解析會有這部分資料。
介面定義
String getExtras()返回說明
類型 | 說明 |
String | 額外參數字串 |
isExpired
解析結果是否已經到期,是否到期是根據解析結果擷取時間和網域名稱配置的 TTL 來計算。
介面定義
boolean isExpired()返回說明
類型 | 說明 |
boolean | true:已到期;false:未到期 |
getTtl
擷取解析結果的 TTL(存留時間)。
介面定義
int getTtl()返回說明
類型 | 說明 |
int | TTL,單位秒 |
6.2 RequestIpType
請求的 IP 類型枚舉。
枚舉值 | 說明 |
| 需要解析的類型為 IPv4 |
| 需要解析的類型為 IPv6 |
| 需要解析的類型為 IPv4 和 IPv6 |
程式碼範例
// 同時解析 IPv4 和 IPv6
HTTPDNSResult result = client.getHttpDnsResultForHostSyncNonBlocking(
"www.example.com",
RequestIpType.both
);6.3 Region
服務節點地區枚舉,用于海外服務地區選取項目。
枚舉值 | 說明 |
| 中國內地(預設) |
| 中國香港 |
| 新加坡 |
| 德國 |
| 美國 |
程式碼範例
new InitConfig.Builder().setRegion(Region.SG); // 新加坡節點6.4 HttpDnsCallback
非同步網域名稱解析介面的回調介面。
onHttpDnsCompleted
解析結束後的回呼函數,成功/失敗都會回調該函數。
介面定義
void onHttpDnsCompleted(HTTPDNSResult result)參數說明
參數 | 類型 | 說明 |
result | HTTPDNSResult | 解析結果對象 |
程式碼範例
client.getHttpDnsResultForHostAsync("www.example.com", RequestIpType.both,
new HttpDnsCallback() {
@Override
public void onHttpDnsCompleted(HTTPDNSResult result) {
if (result != null && result.getIps() != null) {
// 解析成功
} else {
// 解析失敗或無結果
}
}
});6.5 ILogger
日誌介面。
log
日誌方法。
介面定義
void log(String msg)參數說明
參數 | 類型 | 說明 |
msg | String | 日誌 |
程式碼範例
HttpDnsLog.setLogger(new ILogger() {
@Override
public void log(String msg) {
// 自訂Tlog
System.out.println("[HTTPDNS] " + msg);
}
});6.6 CacheTtlChanger
自訂網域名解析結果 TTL 的介面。
changeCacheTtl
自訂 TTL。
介面定義
int changeCacheTtl(String host, RequestIpType type, int ttl)參數說明
參數 | 類型 | 說明 |
host | String | 網域名稱 |
type | RequestIpType | IP 類型 |
ttl | int | 原始的 ttl |
返回說明
類型 | 說明 |
int | 自訂後的 ttl,如果不需要自訂,請返回原始的 ttl |
程式碼範例
new InitConfig.Builder()
.configCacheTtlChanger(new CacheTtlChanger() {
@Override
public int changeCacheTtl(String host, RequestIpType type, int ttl) {
if ("www.aliyun.com".equals(host)) {
return ttl * 10;
}
return ttl;
}
});6.7 NotUseHttpDnsFilter
不使用 HTTPDNS 解析的網域名稱過濾介面。
notUseHttpDns
配置不使用 HTTPDNS 解析的網域名稱。
介面定義
boolean notUseHttpDns(String hostName)參數說明
參數 | 類型 | 說明 |
hostName | String | 網域名稱 |
返回說明
類型 | 說明 |
boolean | true:過濾當前網域名稱,當前網域名稱不走 HTTPDNS 的雲端解析;false:不過濾當前網域名稱,當前網域名稱走 HTTPDNS 的雲端解析 |
程式碼範例
new InitConfig.Builder()
.setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
@Override
public boolean notUseHttpDns(String hostName) {
return "www.aliyun.com".equals(hostName);
}
});6.8 IPRankingBean
IP 優選配置項。設定該介面後,如果解析了相應的網域名稱,則 SDK 會對返回的 IP 進行 IP 測速,對返回的列表進行動態排序,以保證第一個 IP 是可用性較好的 IP。
構造方法
IPRankingBean(String hostName, int port)參數說明
參數 | 類型 | 說明 |
hostName | String | 進行 IP 優選的網域名稱 |
port | int | 用於測試速度的連接埠 |
getHostName
擷取網域名稱。
介面定義
String getHostName()getPort
擷取連接埠。
介面定義
int getPort()程式碼範例
List<IPRankingBean> list = new ArrayList<>();
list.add(new IPRankingBean("www.example.com", 443));
list.add(new IPRankingBean("api.example.com", 8080));
new InitConfig.Builder()
.setIPRankingList(list);