同步解析接口
/*** HTTPDNS 同步解析接口* 首先查询缓存,若存在则返回结果,若不存在则进行同步域名解析请求* 解析完成返回最新解析结果* 返回值字符串以“;”分隔,“;”前为解析得到的 IPv4 地址(解析失败填“0”),“;”后为解析得到的 IPv6 地址(解析失败填“0”)* 返回示例:121.14.77.221;2402:4e00:1020:1404:0:9227:71a3:83d2* @param domain 域名(如www.qq.com)* @return 域名对应的解析 IP 结果集合*/String ips = MSDKDnsResolver.getInstance().getAddrByName(domain);/*** HTTPDNS 同步解析接口(批量查询,单次不能超过8个域名)* 首先查询缓存,若存在则返回结果,若不存在则进行同步域名解析请求* 解析完成返回最新解析结果* 返回值 ipSet 即解析得到的 IP 集合* ipSet.v4Ips 为解析得到 IPv4 集合, 可能为 null* ipSet.v6Ips 为解析得到 IPv6 集合, 可能为 null* 单独域名返回结果示例:IpSet{v4Ips=[121.14.77.201, 121.14.77.221], v6Ips=[2402:4e00:1020:1404:0:9227:71ab:2b74, 2402:4e00:1020:1404:0:9227:71a3:83d2], ips=null}* 多域名返回结果示例:IpSet{v4Ips=[www.baidu.com:14.215.177.39, www.baidu.com:14.215.177.38, www.youtube.com:104.244.45.246], v6Ips=[www.youtube.com.:2001::1f0:5610], ips=null}* @param domain 支持多域名,域名以“,”分割,例如:qq.com,baidu.com* @return 域名对应的解析 IP 结果集合*/Ipset ips = MSDKDnsResolver.getInstance().getAddrsByName(domain);
异步解析接口
// 异步回调,注意所有异步请求需配合异步回调使用MSDKDnsResolver.getInstance().setHttpDnsResponseObserver(new HttpDnsResponseObserver() {@Overridepublic void onHttpDnsResponse(String tag, String domain, Object ipResultSemicolonSep) {long elapse = (System.currentTimeMillis() - Long.parseLong(tag));String lookedUpResult = "[[getAddrByNameAsync]]:ASYNC:::" + ipResultSemicolonSep +", domain:" + domain + ", tag:" + tag +", elapse:" + elapse;}});/*** HTTPDNS 异步解析接口(需配合异步回调使用)* 首先查询缓存,若存在则返回结果,若不存在则进行异步域名解析请求* 解析完成会在异步回调返回最新解析结果* @param domain 域名(如www.qq.com)*/MSDKDnsResolver.getInstance().getAddrByNameAsync(hostname, String.valueOf(System.currentTimeMillis()))/*** HTTPDNS 异步解析接口(批量查询,需配合异步回调使用,单次不能超过8个域名)* 首先查询缓存,若存在则返回结果,若不存在则进行同步域名解析请求* 解析完成会在异步回调返回最新解析结果* @param domain 支持多域名,域名以“,”分割,例如:qq.com,baidu.com*/MSDKDnsResolver.getInstance().getAddrsByNameAsync(hostname, String.valueOf(System.currentTimeMillis()))
说明:
如何提升IPv6使用率:
如上所示,单个域名解析时,返回固定格式为 IPv4;IPv6,批量域名解析时,返回格式为
IpSet{v4Ips=[], v6Ips=[], ips=[]}
。业务可按需获取 IPv6 地址进行 URL 请求。使用 IPv6 地址进行 URL 请求时,需添加方框号
[ ]
进行处理,例如:http://[64:ff9b::b6fe:7475]/
。清除指定域名缓存
/*** 清除指定域名缓存* @param domain 域名,多个域名用,分割(如"www.qq.com,tencent.com")*/MSDKDnsResolver.getInstance().clearHostCache(String domain)// 清除所有缓存MSDKDnsResolver.getInstance().clearHostCache();