获取服务实例
获取HTTPDNS服务实例,不同的AccountID会返回不同的实例。
接口定义
HttpDnsService getService(Context applicationContext, String accountID);
参数说明
参数 | 类型 | 是否必填 | 说明 |
applicationContext | Context | 是 | 您的Android App Context。 |
accountID | String | 是 | 您的AccountID,在EMAS控制台首页获取。 |
代码示例
HttpDnsService httpdns = HttpDns.getService(getApplicationContext(), accountId);
获取服务实例(鉴权方式)
接口定义
HttpDnsService httpdns = HttpDns.getService(applicationContext, accountID, secretKey);
参数说明
参数 | 类型 | 是否必填 | 说明 |
applicationContext | Context | 是 | Android App的Context。 |
accountID | String | 是 | 系统分配的Account ID,当您开通HTTPDNS后,您可在EMAS控制台的概览页面获取到您对应的Account ID信息。 您也可以在下载的配置文件中获取AccountID。 |
secretKey | String | 是 | 鉴权对应的secretKey。 |
代码示例
HttpDnsService httpdns = HttpDns.getService(getApplicationContext(), accountId, secretKey);
设置预解析域名
将App使用到的域名预设进来,以便于HTTPDNS进行预解析。
接口定义
void setPreResolveHosts(ArrayList<String> hostList);
void setPreResolveHosts(ArrayList<String> hostList, RequestIpType requestIpType);
参数说明
参数 | 类型 | 是否必填 | 说明 |
hostList | ArrayList<String> | 是 | 预解析域名列表。 |
requestIpType | RequestIpType | 否 | 预解析的IP类型, 默认为IPv4地址。 |
代码示例
// httpdns为初始化获取的服务实例,默认预解析域名为ipv4地址
httpdns.setPreResolveHosts(new ArrayList<>(Arrays.asList("www.taobao.com", "www.aliyun.com")));
// httpdns为初始化获取的服务实例,预解析域名为ipv4地址
httpdns.setPreResolveHosts(new ArrayList<>(Arrays.asList("www.taobao.com", "www.aliyun.com")), RequestIpType.v4);
// httpdns为初始化获取的服务实例,预解析域名为ipv6地址
httpdns.setPreResolveHosts(new ArrayList<>(Arrays.asList("www.taobao.com", "www.aliyun.com")), RequestIpType.v6);
// httpdns为初始化获取的服务实例,预解析域名对应ipv4 ipv6地址
httpdns.setPreResolveHosts(new ArrayList<>(Arrays.asList("www.taobao.com", "www.aliyun.com")), RequestIpType.both);
初始化配置
在获取服务实例之前,集中配置服务的一些属性。初始化配置是可选的,完全可以不进行配置,在获取服务之后,分别设置。注意:初始化配置必须在获取服务实例之前,否则不会生效。
接口定义
public class InitConfig {
public static class Builder {
/**
* 配置是否允许返回过期IP
* @param enableExpiredIp
* @return
*/
public Builder setEnableExpiredIp(boolean enableExpiredIp)
/**
* 配置是否允许本地持久化缓存解析结果
* @param enableCacheIp
* @return
*/
public Builder setEnableCacheIp(boolean enableCacheIp)
/**
* 配置请求服务超时时间
* @param timeout
* @return
*/
public Builder setTimeout(int timeout)
/**
* 配置是否启用Https
* @param enableHttps
* @return
*/
public Builder setEnableHttps(boolean enableHttps)
/**
* 配置ipv4探测域名
* @param ipProbeItems
* @return
*/
public Builder setIpProbeItems(List<IPProbeItem> ipProbeItems)
/**
* 配置region节点
* @param region
* @return
*/
public Builder setRegion(String region)
/**
* 配置自定义ttl的逻辑
* @param cacheTtlChanger 修改ttl的接口
*/
public Builder configCacheTtlChanger(CacheTtlChanger cacheTtlChanger)
/**
* 配置固定IP域名列表
* @param hostListWithFixedIp 固定IP域名列表
*/
public Builder configHostWithFixedIp(List<String> hostListWithFixedIp)
/**
* 生成配置,并记录配置所属account
* @param accountId
* @return
*/
public InitConfig buildFor(String accountId)
}
}
/**
* 修改ttl时长的接口
* 用于用户定制ttl,以控制缓存的时长
*/
public interface CacheTtlChanger {
/**
* 根据域名、ip类型和服务的ttl返回定制的ttl
* @param host 域名
* @param type ip类型
* @param ttl 服务下发的ttl 单位秒
* @return 定制的ttl 单位秒
*/
int changeCacheTtl(String host, RequestIpType type, int ttl);
}
配置方法说明
方法 | 参数 | 是否必须 | 说明 |
setEnableExpiredIp | boolean | 否 | 默认允许,同设置是否允许返回TTL过期域名的IP功能。 |
setEnableCacheIp | boolean | 否 | 默认不启用,同是否允许启用持久化缓存功能。 |
setTimeout | int | 否 | 默认 15000 毫秒,同设置网络请求超时时间功能 |
setEnableHttps | boolean | 否 | 默认不启用https,同设置是否使用HTTPS协议解析域名功能。 |
setIpProbeItems | List<IPProbeItem> | 否 | 默认不探测,同启用IP优选功能。 |
setRegion | String | 否 | 默认新加坡,同设置region节点功能。 |
configCacheTtlChanger | CacheTtlChanger | 否 | 配置接口,用于域名缓存的自定义ttl时长 |
configHostWithFixedIp | List<String> | 否 | 配置固定IP的域名列表,告诉SDK这些域名的解析结果是固定的,便于SDK进行相关的优化,降低解析频次 |
buildFor | String | 是 | 创建配置,只有调用此方法配置才会生效。参数accountId是Account ID,在阿里云控制台获取。 |
代码示例
CacheTtlChanger cacheTtlChanger = new CacheTtlChanger() {
@Override
public int changeCacheTtl(String host, RequestIpType type, int ttl) {
// 如果我们想让域名 www.aliyun.com 的域名解析结果缓存 1小时
if ("www.aliyun.com".equals(host)) {
return 60 * 60;
}
return ttl;
}
};
ArrayList<String> hostWithFixedIp = new ArrayList<>();
// 我们假设,www.aliyun.com域名的解析结果固定
hostWithFixedIp.add("www.aliyun.com");
// 初始化配置
new InitConfig.Builder()
// 配置初始的region
.setRegion(currentRegion)
// 配置是否启用https,默认http
.setEnableHttps(enableHttps)
// 配置服务请求的超时时长,毫秒
.setTimeout(10 * 1000)
// 配置是否启用本地缓存,默认不启用
.setEnableCacheIp(true)
// 配置是否允许返回过期IP,默认允许
.setEnableExpiredIp(true)
// 配置ipv4探测域名
.setIpProbeItems(list)
// 定制某些域名的缓存时长
.configCacheTtlChanger(cacheTtlChanger)
// 设置解析结果固定的域名列表
.configHostWithFixedIp(hostWithFixedIp)
// 针对哪一个account配置
.buildFor(accountID);