Android SDK を統合した後、Local DNS の障害をシミュレートすることで、HTTPDNS が正しく機能していることを確認できます。このトピックでは、このテストの方法と手順について説明します。
仕組み
HTTPDNS は、HTTP または HTTPS を介して Alibaba Cloud DNS サーバーに直接名前解決リクエストを送信します。このプロセスは、システムの Local DNS をバイパスし、ネットワークの問題によって引き起こされる DNS ハイジャックや名前解決の失敗を防ぎます。
モバイルデバイスは通常、現在のネットワークによって提供される Local DNS を使用します。Wi-Fi 接続の場合、デバイスはルーターで構成されているか、キャリアによって提供される DNS を使用します。モバイルデータ接続の場合、デバイスはキャリアの DNS を使用します。Wi-Fi 環境では、Wi-Fi の DNS 設定を変更することで Local DNS の状態を変更できます。Wi-Fi の DNS を無効なアドレスに設定すると、Local DNS の名前解決が失敗する環境が作成されます。このシミュレートされたハイジャック環境でネットワークリクエストを行うと、次のようになります。
リクエストが成功した場合、リクエストが Local DNS をバイパスし、HTTPDNS の統合が成功したことを示します。
リクエストが失敗した場合、リクエストがまだ Local DNS に依存しており、HTTPDNS の統合が失敗したことを示します。
前提条件
テストデバイス: Wi-Fi の DNS 設定を手動で変更できる Android スマートフォン。
ネットワーク環境: DNS アドレスを手動で変更できる Wi-Fi 接続。
アプリのステータス: アプリが EMAS HTTPDNS SDK と統合されていること。
テストドメイン名: Alibaba Cloud HTTPDNS コンソールで構成され、使用されるサービスドメイン名。
手順
ステップ 1: 通常のネットワーク環境での検証
テストデバイスを利用可能な Wi-Fi ネットワークに接続します。デフォルトの DNS 設定を維持します。

HTTPDNS を無効にした状態でアプリを開き、ホームページの読み込みや API の呼び出しなど、ドメイン名を使用するネットワークリクエストをトリガーします。
リクエストが成功したことを確認します。
このステップではベースラインを確立します。これにより、アプリとそのサービスが通常のネットワーク環境で正しく機能することを確認します。
ステップ 2: Local DNS の名前解決の失敗をシミュレートする
テストデバイスで、Wi-Fi 設定に移動します。接続されている Wi-Fi ネットワークの名前を長押しし、[ネットワークを変更] または [詳細オプション] を選択します。
IP 設定を [静的] に変更します。
DNS 1 および DNS 2 フィールドに、
1.2.3.4や100.100.100.100などの無効な IP アドレスを入力します。これにより、Local DNS がドメイン名を解決できなくなります。説明注: 114.114.114.114 や 8.8.8.8 などの有効なパブリック DNS アドレスは使用しないでください。

構成を保存し、Wi-Fi ネットワークに再接続します。
ステップ 3: シミュレートされたハイジャック環境での検証
デバイスがステップ 2 で変更した Wi-Fi ネットワークに接続されていることを確認します。このネットワークの DNS は、無効なアドレスに設定されている必要があります。
モバイルデータ接続をオフにします。これにより、Wi-Fi 接続が失敗した場合にシステムが自動的にモバイルネットワークに切り替わるのを防ぎます。
HTTPDNS を有効にし、アプリを開き、ステップ 1 と同じサービスリクエスト (ホームページの読み込みや API の呼び出しなど) をトリガーします。
リクエストの結果を観察します。
リクエスト結果
結論
例
ネットワークリクエストが成功
リクエストは Local DNS をバイパスしました。ドメイン名の名前解決は HTTPDNS によって完了しました。これは、HTTPDNS が正常に統合されたことを示します。

ネットワークリクエストが失敗
最初のリクエストが失敗した場合、キャッシュミスにより Local DNS にフォールバックした可能性があります。しばらく待ってからリトライしてください。
複数のリクエストが依然として失敗する場合、アプリはまだ Local DNS に依存しています。シミュレートされたハイジャック環境では、名前解決が失敗します。これは、HTTPDNS の統合が失敗したことを示します。
説明ドメイン名の名前解決に同期非ブロッキング API を使用する場合は、setPreResolveHosts メソッドを使用して事前解決を有効にし、setEnableExpiredIp メソッドを使用して期限切れの IP アドレスの使用を許可します。これにより、名前解決の結果がローカルキャッシュで利用可能になります。この方法により、キャッシュミスによる Local DNS へのフォールバックを防ぎ、検証の精度に影響を与えることを回避できます。