IPv6 専用ネットワーク環境で HTTPDNS を使用する場合は、次の点に注意してください。
IP アドレス URL を使用してネットワークリクエストを行う場合、IPv4 アドレスと IPv6 アドレスの形式が異なります。
IPv4: http://1.1.1.1/path
IPv6: http://[2001:db8:c000:221::]/path
前の例に示すように、URL では IPv6 アドレスを角かっこで囲みます。
開発者の便宜のために、HTTPDNS は、異なる URL 形式に適応する次の IP 取得操作を提供します。
-[HTTPDNS Service getIpByHostAsyncInURLFormat:]。HTTPDNS を使用して IP アドレスを取得し、その IP アドレスを使用して URL ベースのネットワークにアクセスする場合、上記の操作を呼び出して、*1.1.1.1* や *[2001:db8:c000:221::]* など、シナリオ固有の URL に準拠するフォーマット済み IP アドレスを取得できます。
他の何かのために正確な IP アドレス情報のみを取得したい場合は、引き続き古い操作
-[HttpDnsService getIpByHostAsync:]を呼び出すことができます。
IPv6 解決を有効にする
IPv6 解決を有効にするかどうかを設定します。 IPv6 解決が有効になっている場合、ドメイン名を IPv6 アドレスに解決するリクエストを開始できます。
IPv6 解決を有効にした後、
getIPv6ByHostAsync:を呼び出して機能を使用します。IPv6 解決を有効にした後、SDK は IPv6 専用ネットワーク環境で解決された IPv4 アドレスを IPv6 アドレスに自動的に変換しなくなります。
getIpsByHostAsync:を呼び出して IPv4 アドレスを取得し、getIPv6ByHostAsync:を呼び出して IPv6 アドレスを取得できます。
API 操作
- (void)enableIPv6:(BOOL)enable;パラメーター
パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
enable | BOOL | はい | IPv6 解決を有効にするかどうかを指定します。デフォルト値: NO。 |
ドメイン名の非同期 IPv6 解決
この機能を有効にすると、ドメイン名を IPv6 アドレスに非同期で解決できます。 IPv6 解決が有効になっているという条件で、ドメイン名に対応する IPv6 アドレスがある場合、ドメイン名は IPv6 アドレスに解決されます。たとえば、ipv6.sjtu.edu.cn ドメイン名に対応する IPv4 アドレスと IPv6 アドレスがそれぞれ 192.168.XX.XX と 2001:da8:8000:1:0:0:XX:XX の場合、ドメイン名は 2001:da8:8000:1:0:0:XX:XX に解決されます。
IPv6 解決が有効になっていない場合は、null が返されます。
API 操作
- (NSString *)getIPv6ByHostAsync:(NSString *)host;パラメーター
パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
host | NSString | はい | ドメイン名。 |
IPv4 と IPv6 の同時解決
IPv4 アドレスと IPv6 アドレスは同時にクエリされ、辞書が返されます。辞書の各キーに対応する値:
IPv4:ALICLOUDHDNS_IPV4
IPv6:ALICLOUDHDNS_IPV6
辞書の各キーの形式:
{
ALICLOUDHDNS_IPV4: ['xxx.xxx.xxx.xxx', 'xxx.xxx.xxx.xxx'],
ALICLOUDHDNS_IPV6: ['xx:xx:xx:xx:xx:xx:xx:xx', 'xx:xx:xx:xx:xx:xx:xx:xx']
}
API 操作
- (NSDictionary <NSString *, NSArray *>*)getIPv4_v6ByHostAsync:(NSString *)host;パラメーター
パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
host | NSString | はい | ドメイン名。 |