このドキュメントでは、Java SDK の API 操作について説明します。
1. 基本的な設定操作
1.1 初期化の設定
HTTPDNS サービスの設定を初期化します。他の API 操作を呼び出す前に、この初期化を完了させる必要があります。
操作の定義
static void init(String accountId, InitConfig config)クラス
HttpDnsClient
パラメーター
パラメーター | タイプ | 必須 | 説明 |
accountId | String | はい | システムによって割り当てられたアカウント 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 | はい | システムによって割り当てられたアカウント 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 プロトコルを使用するには、SDK が HTTPS を使用して名前解決を行うように設定できます。
HTTPS リクエストはより高いセキュリティを提供します。ただし、HTTP リクエストと HTTPS リクエストでは課金方法が異なります。詳細については、「製品課金」をご参照ください。
HTTPS を使用しているのに、なぜ暗号化が必要なのか疑問に思われるかもしれません。答えは「はい」です。両者は異なるレイヤーで機能します。HTTPS プロトコルはトランスポート層のセキュリティを保証しますが、パケットをキャプチャすればパラメーターや応答の詳細を閲覧できます。AES 暗号化は HTTPDNS サービスレイヤーでのセキュリティを保証します。パケットをキャプチャしても、プレーンテキストのコンテンツを見ることはできません。したがって、必要に応じて両方を有効にすることができます。
インターフェイスの定義
InitConfig.Builder setEnableHttps(boolean enableHttps)クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enableHttps | boolean | はい | 名前解決に HTTPS プロトコルを使用するかどうかを指定します。`true`:HTTPS 解決を有効にします。`false`:HTTPS 解決を無効にします。 |
setTimeoutMillis
名前解決のタイムアウト期間を設定します。デフォルト値は 2000 ミリ秒です。
インターフェイスの定義
InitConfig.Builder setTimeoutMillis(int timeoutMillis)クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
timeoutMillis | int | はい | 名前解決のタイムアウト期間 (ミリ秒)。デフォルト値は 2000 ミリ秒です。最大値は 5000 ミリ秒です。 |
setEnableExpiredIp
SDK は DNS プロトコルに従い、TTL (Time to Live) に基づいて名前解決の結果をキャッシュします。これにより、アプリケーションがネットワークリクエストを開始する際の 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 アドレスがより良い可用性を持つようにします。
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. 名前解決操作
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 同期非ブロッキング解決
同期非ブロッキング操作を使用してドメイン名を解決しても、現在のスレッドはブロックされませんが、空の結果が返されることがあります。
この操作はキャッシュのみを照会し、キャッシュから解決結果を返します。キャッシュに解決結果がないか、結果が期限切れの場合、ドメイン名の解決はワーカースレッドで実行されます。解決が成功した後、キャッシュは次のドメイン名解決呼び出しのために更新されます。
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 | いいえ | ドメイン名のローカルキャッシュキー。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 | いいえ | ドメイン名のローカルキャッシュキー。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 | いいえ | ドメイン名のローカルキャッシュキー。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. キャッシュ管理操作
3.1 特定ドメイン名のキャッシュクリア
Alibaba Cloud DNS のユーザーは、この操作を呼び出してローカルキャッシュをクリアできます。これにより、ドメイン名の設定変更が数秒で反映されます。
たとえば、ドメイン名が xxx.com で、その解決済み IP アドレスが ip1 であるとします。ip1 が攻撃を受けている場合、トラフィックを ip2 に移行する必要があります。フローは次のとおりです:
まず、Cloud DNS コンソールで、ドメイン名の IP アドレスを ip2 に変更します。HTTPDNS サーバーはこの変更情報を即座に取得し、サーバーサイドでそのドメイン名の ip1 キャッシュをパージします。
手動でこの操作を呼び出して、xxx.com ドメイン名のローカルキャッシュをクリアします。
アプリケーションがキャッシュをクリアした後の次のリクエストにより、サーバーサイドは権威サーバーに再リクエストして最新の解決済み IP アドレス ip2 を取得します。これにより、フロントエンドの解決結果は即座に ip2 として有効になります。
cleanHostCache
インターフェイスの定義
void cleanHostCache(ArrayList<String> hosts)クラス
HttpDnsClient
パラメーター
パラメーター | タイプ | 必須 | 説明 |
hosts | ArrayList<String> | はい | 削除するホストドメイン名の配列です。すべてのデータを削除する場合は、`null` または空の配列を渡してください。 |
コード例
// 特定のドメイン名のキャッシュをクリアします。
ArrayList<String> hosts = new ArrayList<>();
hosts.add("www.example.com");
client.cleanHostCache(hosts);
// すべてのキャッシュをクリアします。
client.cleanHostCache(null);4. トラブルシューティングと追跡操作
4.1 SessionId の取得
解決プロセスを追跡するために使用される sessionId を取得します。解決例外が発生した場合は、DingTalk、チケット、またはその他のチャネルを通じて技術サポートを求める際に、この情報を提供してください。
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 | はい | ログを印刷するかどうか。 |
コード例
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 | はい | 以前に追加されたロガー。 |
コード例
HttpDnsLog.removeLogger(myLogger);5. その他の操作
5.1 リージョンの設定
リージョンノードを動的に更新します。
setRegion
インターフェイスの定義
void setRegion(Region region)クラス
HttpDnsClient
パラメーター
パラメーター | タイプ | 必須 | 説明 |
region | Region | はい | リージョンノード。サービスエリア選択のために中国以外のリージョンを設定します。 |
コード例
client.setRegion(Region.HK); // 中国 (香港) ノードに切り替えます。5.2 署名時刻の補正
この操作を実行すると、時刻のずれが発生した場合、各ネットワークリクエストでデバイスの時刻が補正されます。この操作を実行しない場合、デバイスの時刻が使用されます。
setAuthCurrentTime
インターフェイスの定義
void setAuthCurrentTime(long time)クラス
HttpDnsClient
パラメーター
パラメーター | タイプ | 必須 | 説明 |
time | long | はい | 現在の UNIX タイムスタンプ (ミリ秒)。 |
コード例
HttpDnsClient client = HttpDnsClient.getClient(accountId);
client.setAuthCurrentTime(System.currentTimeMillis());6. 共通データ構造
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 (Time to Live) を取得します。
インターフェイスの定義
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 リージョン
サービスノードリージョンの列挙。中国以外のサービスリージョンを選択するために使用します。
列挙値 | 説明 |
| 中国本土 (デフォルト) |
| 中国 (香港) |
| シンガポール |
| ドイツ |
| 米国 |
コード例
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) {
// カスタムログ処理。
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 アドレスがより良い可用性を持つようにします。
コンストラクター
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);