本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文档中的解析接口都已标记为过时,在未来版本中这些接口将会被移除,请参考最新的域名解析接口文档使用域名解析能力。
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 *)host
2.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 | 是 | 目标域名。 |