概要
HTTPDNS ソフトウェア開発キット (SDK) は、豊富なドメイン名前解決 API と、以下を含むその他の関連機能を提供します。
ドメイン名ブラックリスト。詳細については、「HTTPDNS のドメイン名ブラックリストを設定する」をご参照ください。
カスタム存続時間 (TTL)。詳細については、「名前解決結果の TTL をカスタマイズする」をご参照ください。
IP アドレスランキング。詳細については、「IP アドレスランキングを有効にする」をご参照ください。
事前解決用のドメイン名を設定する
アプリが起動し、SDK が初期化された後、すぐにこの API を呼び出して、後で使用する可能性のあるホットスポットドメイン名を設定します。これにより、SDK はこれらのドメイン名を事前に解決し、後続の名前解決リクエストの待機時間を短縮できます。
実行時にこの API を呼び出すと、SDK は指定されたリスト内のドメイン名を直ちに解決します。これにより、これらのドメイン名の名前解決結果がリフレッシュされ、キャッシュに記録されます。この操作は強制的な更新に相当します。通常、特定のビジネスアクションの後に、現在のドメイン名前解決をリフレッシュし、新しいスケジューリング決定を強制するために使用されます。
名前解決の効率と応答速度のバランスをとるため、SDK はサーバーに送信される各バッチ名前解決タスクを 5 つのドメイン名に制限します。事前解決リストに 5 つを超えるドメイン名が含まれている場合、SDK は自動的に名前解決タスクをバッチで送信します。
<u>setPreResolveHosts</u>
API 定義
void setPreResolveHosts(ArrayList<String> hostList)
void setPreResolveHosts(ArrayList<String> hostList, RequestIpType requestIpType)
導入バージョン
2.4.0
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
hostList | ArrayList<String> | はい | 事前解決するドメイン名のリスト。requestIpType パラメーターが指定されていない場合、デフォルト値は RequestIpType.v4 です。 重要
|
requestIpType | RequestIpType | いいえ | 事前解決する IP アドレスのタイプ。RequestIpType.both の使用を推奨します。 解決する IP アドレスタイプの列挙。有効な値:
|
同期ドメイン名前解決
同期名前解決 API は、有効な名前解決結果が取得されて返されるまで、現在のスレッドをブロックします。
この API はまずキャッシュをクエリします。キャッシュに有効な名前解決結果が存在する場合、キャッシュされた結果がすぐに返されます。キャッシュに有効な結果が見つからない場合、API は呼び出し元のスレッドをブロックし、ワーカースレッドでドメイン名前解決を実行します。名前解決が完了すると、結果を返します。タイムアウト期間に達した場合、null 値を返します。
この API がメインスレッドで誤用され、アプリがカクつくのを防ぐため、API は呼び出し元のスレッドを検出します。メインスレッドの場合、API は自動的に getHttpDnsResultForHostSyncNonBlocking API のロジックにスペックダウンします。
同期名前解決 API が要する合計時間は、タイムアウト設定によって制御されます。タイムアウト期間内に名前解決が成功しない場合、空の名前解決結果がすぐに返されます。
getHttpDnsResultForHostSync
API 定義
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType requestIpType)
導入バージョン
2.3.2
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
host | String | はい | 解決するドメイン名。 |
requestIpType | RequestIpType | はい | 解決する IP アドレスのタイプ。RequestIpType.both の使用を推奨します。 解決する IP アドレスタイプの列挙。有効な値:
|
戻り値
タイプ | 説明 |
解析結果。 |
サンプルコード
val httpdns = HttpDns.getService(accountID)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto)HttpDnsService httpdns = HttpDns.getService(accountID);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSync("www.aliyun.com", RequestIpType.auto);非同期ドメイン名前解決
非同期名前解決 API は現在のスレッドをブロックしません。名前解決結果はコールバックを介して返されます。
この API はまずキャッシュをクエリします。キャッシュに有効な名前解決結果が存在する場合、キャッシュされた結果はすぐにコールバックを介して返されます。キャッシュに有効な結果が見つからない場合、API はワーカースレッドでドメイン名前解決を実行します。名前解決が完了するか、タイムアウト期間に達した後、結果はコールバックを介して返されます。
非同期名前解決 API が要する合計時間は、タイムアウト設定によって制御されます。タイムアウト期間内に名前解決が成功しない場合、空の名前解決結果がすぐにコールバックを介して返されます。
getHttpDnsResultForHostAsync
API 定義
void getHttpDnsResultForHostAsync(String host, RequestIpType type, HttpDnsCallback callback)
導入バージョン
2.4.0
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
host | String | はい | 解決するドメイン名。 |
requestIpType | RequestIpType | はい | 解決する IP アドレスのタイプ。RequestIpType.both の使用を推奨します。 解決する IP アドレスタイプの列挙。有効な値:
|
callback | はい | ドメイン名前解決結果のコールバック API。 |
サンプルコード
val httpdns = HttpDns.getService(accountID)
val httpDnsResult = dnsService?.getHttpDnsResultForHostAsync("www.aliyun.com", RequestIpType.auto, HttpDnsCallback {
httpDnsResult = it
})HttpDnsService httpdns = HttpDns.getService(accountID);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostAsync("www.aliyun.com", RequestIpType.auto, new HttpDnsCallback() {
void onHttpDnsCompleted(HTTPDNSResult result) {
}
});同期非ブロッキングドメイン名前解決
同期非ブロッキング名前解決 API は現在のスレッドをブロックしませんが、空の結果を返すことがあります。
この API はキャッシュのみをクエリし、キャッシュから名前解決結果を返します。キャッシュに名前解決結果がない場合、またはキャッシュされた結果が期限切れの場合、ドメイン名前解決はワーカースレッドで実行されます。名前解決が成功した後、次回の名前解決呼び出しのためにキャッシュが更新されます。
getHttpDnsResultForHostSyncNonBlocking
API 定義
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
導入バージョン
2.4.0
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
host | String | はい | 解決するドメイン名。 |
requestIpType | RequestIpType | はい | 解決する IP アドレスのタイプ。RequestIpType.both の使用を推奨します。 解決する IP アドレスタイプの列挙。有効な値:
|
戻り値
タイプ | 説明 |
名前解決結果。 |
サンプルコード
val httpdns = HttpDns.getService(accountID)
val httpDnsResult = dnsService?.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto)HttpDnsService httpdns = HttpDns.getService(accountID);
HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking("www.aliyun.com", RequestIpType.auto);特定のドメイン名のキャッシュをクリアする
Alibaba Cloud DNS を使用している場合、この API を呼び出してローカルキャッシュをクリアできます。これにより、ドメイン名の構成が数秒で有効になります。 たとえば、ドメイン名 xxx.com が IP アドレス ip1 に解決されるとします。ip1 が攻撃を受けている場合、トラフィックを ip2 に移行する必要があります。プロセスは次のとおりです。
Alibaba Cloud DNS コンソールで、ドメイン名の IP アドレスを ip2 に変更します。HTTPDNS サーバーはこの変更をすぐに受信し、サーバー上のドメイン名の ip1 キャッシュを消去します。
この API を手動で呼び出して、ドメイン名 xxx.com のローカルキャッシュをクリアします。
キャッシュがクリアされた後のアプリからの次のリクエストは、サーバーが権威サーバーから最新の IP アドレス ip2 をリクエストするようトリガーします。これにより、新しい名前解決結果がクライアントで直ちに有効になります。
cleanHostCache
API 定義
void cleanHostCache(ArrayList<String> hosts)
導入バージョン
2.2.2
この操作は、メモリキャッシュとローカルキャッシュの両方をクリアします。
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
hosts | ArrayList<String> | はい | キャッシュをクリアしたいドメイン名の配列。すべてのデータをクリアするには、null または空の配列を渡します。 |