本文檔中的解析介面都已標記為過時,在未來版本中這些介面將會被移除,請參考最新的網域名稱解析介面文檔使用網域名稱解析能力。
HTTPDNS情境下相容IPv6-Only網路環境需要注意以下問題:
當您使用IP形式的URL進行網路請求時,IPv4與IPv6的IP地址使用方式略有不同。
IPv4:http://x.x.x.x/path
IPv6:http://[2001:db8:c000:221::]/path
即在URL中使用IPv6地址時,需要在IPv6地址基礎上額外家還是那個“[]”.
為了方便開發人員的使用,HTTPDNS提供了適配URL格式的IP擷取介面:
-[HttpDnsService getIpByHostAsyncInURLFormat:]。當您通過HTTPDNS進行IP擷取,並使用該IP進行基於URL的網路訪問時,您可以通過上述API直接擷取符合URL使用情境,格式化後的IP資訊,如*x.x.x.x*,*[2001:db8:c000:221::]*。
如果您僅僅為了擷取精準的IP資訊並另做他用,您可以繼續使用老介面:
-[HttpDnsService getIpByHostAsync:]。
設定是否開啟IPv6
設定是否開啟IPv6解析,開啟時會請求解析IPv6地址。
開啟後調用
getIPv6ByHostAsync:介面使用。開啟IPv6解析後,SDK在IPv6-Only網路環境下,對IPv4解析結果不再自動轉換為IPv6地址,
getIpsByHostAsync:返回 IPv4 地址,getIPv6ByHostAsync:返回 IPv6 地址。
介面定義
- (void)enableIPv6:(BOOL)enable;參數說明
參數 | 類型 | 是否必填 | 說明 |
enable | BOOL | 是 | 是否開啟,預設為NO。 |
IPv6非同步解析網域名稱
IPv6非同步解析網域名稱,返回IPv6地址,開啟IPv6結果解析後, 若網域名稱存在IPv6地址,則返回IPv6解析結果。例:網域名稱:ipv6.sjtu.edu.cn,IPv4 地址:192.168.XX.XX,IPv6地址:2001:da8:8000:1:0:0:XX:XX,解析成功後介面返回結果:2001:da8:8000:1:0:0:XX:XX。
未開啟IPv6解析時返回為null。
介面定義
- (NSString *)getIPv6ByHostAsync:(NSString *)host;2.1.0版本對介面名稱進行了最佳化,如果接入的SDK是2.1.0版本或2.1.0以後的版本,建議使用下面的新API,上面這箇舊API可能會在後續版本中刪除
- (NSString *)getIPv6ForHostAsync:(NSString *)host;參數說明
參數 | 類型 | 是否必填 | 說明 |
host | NSString | 是 | 目標網域名稱。 |
IPv6非同步解析網域名稱擷取結果清單
IPv6非同步解析網域名稱,返回IPv6地址,開啟IPv6結果解析後, 若網域名稱存在IPv6地址,則返回IPv6解析結果。例:網域名稱:ipv6.sjtu.edu.cn,IPv4 地址:192.168.XX.XX,IPv6地址:2001:da8:8000:1:0:0:XX:XX,解析成功後介面返回結果:2001:da8:8000:1:0:0:XX:XX。
未開啟IPv6解析時返回為null。
介面定義
- (NSArray *)getIPv6sByHostAsync:(NSString *)host2.1.0版本對介面名稱進行了最佳化,如果接入的SDK是2.1.0版本或2.1.0以後的版本,建議使用下面的新API,上面這箇舊API可能會在後續版本中刪除
- (NSArray *)getIPv6ListForHostAsync:(NSString *)host;參數說明
參數 | 類型 | 是否必填 | 說明 |
host | NSString | 是 | 目標網域名稱。 |
IPv4和IPv6同時解析
同時查詢IPv4、IPv6,返回字典,字典KEY對應的值分別是:
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']
}
介面定義
- (NSDictionary <NSString *, NSArray *>*)getIPv4_v6ByHostAsync:(NSString *)host;2.1.0版本對介面名稱進行了最佳化,如果接入的SDK是2.1.0版本或2.1.0以後的版本,建議使用下面的新API,上面這箇舊API可能會在後續版本中刪除
- (NSDictionary <NSString *, NSArray *>*)getHttpDnsResultHostAsync:(NSString *)host;參數說明
參數 | 類型 | 是否必填 | 說明 |
host | NSString | 是 | 目標網域名稱。 |
根據當前網路棧自動解析
如果當前網路是IPv4Only,只返回IPv4地址;如果當前網路是IPv6Only,只返回IPv6地址;如果當前網路是雙棧,則同時返回IPv4和IPv6的地址。
同時查詢IPv4、IPv6,返回字典,字典KEY對應的值分別是:
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']
}
未開啟IPv6解析時返回為null。
介面定義
-(NSDictionary <NSString *, NSArray *>*)autoGetIpsByHostAsync:(NSString *)host;2.1.0版本對介面名稱進行了最佳化,如果接入的SDK是2.1.0版本或2.1.0以後的版本,建議使用下面的新API,上面這箇舊API可能會在後續版本中刪除
-(NSDictionary <NSString *, NSArray *>*)autoGetHttpDnsResultForHostAsync:(NSString *)host;參數說明
參數 | 類型 | 是否必填 | 說明 |
host | NSString | 是 | 目標網域名稱。 |