获取服务实例
获取HTTPDNS服务实例,HTTPDNS SDK支持多实例,不同的Account ID会返回不同的实例。
每个Account ID初始化的实例采用单例设计模式,一旦初始化完成,该实例将持续存在于整个App生命周期中,不会重复创建。
getService
接口定义
HttpDnsService getService(Context applicationContext, String accountID);
所属类
HttpDns
引入版本
1.2.3
废弃版本
2.6.3
替代接口
HttpDnsService getService(String accountID)
参数说明
参数 | 类型 | 是否必填 | 说明 |
applicationContext | Context | 是 | 您的Android App Context。 |
accountID | String | 是 | 系统分配的Account ID,当您开通HTTPDNS后,您可在EMAS控制台 > xx项目 > 平台服务 > HTTPDNS > 开发配置页面获取到您对应的Account ID信息。 |
getService
接口定义
HttpDnsService getService(Context applicationContext, String accountID, String secretKey);
所属类
HttpDns
引入版本
1.3.2
废弃版本
2.6.3
替代接口
HttpDnsService getService(String accountID)
InitConfig.Builder setContext(Context context)
InitConfig.Builder setSecretKey(String secretKey)
参数说明
参数 | 类型 | 是否必填 | 说明 |
applicationContext | Context | 是 | 您的Android App Context。 |
accountID | String | 是 | 系统分配的Account ID,当您开通HTTPDNS后,您可在EMAS控制台 > xx项目 > 平台服务 > HTTPDNS > 开发配置页面获取到您对应的Account ID信息。 |
secretKey | String | 是 | 鉴权对应的secretKey。 |
是否使用HTTPS请求
HTTPDNS SDK进行域名解析时,默认是通过HTTP协议发起解析请求,如果需要使用HTTPS协议发起解析请求,需要配置使用HTTPS协议进行域名解析。
使用HTTPS请求将会获得更高的安全性,但也要关注HTTP和HTTPS两种方式在计费上的不同。关于计费逻辑可参考产品计费。
setHTTPSRequestEnabled
接口定义
void setHTTPSRequestEnabled(boolean enableHttps)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setEnableHttps(boolean enableHttps)
参数说明
参数 | 类型 | 是否必填 | 说明 |
enableHttps | boolean | 是 | 设置是否使用https协议解析域名。
|
是否允许使用过期IP
遵循DNS协议,按照TTL缓存域名解析结果,从而提升App在发起网络请求时获取IP的效率。当缓存过期后,若App调用解析接口获取IP,此时会有不同情况:
如果App调用的是同步非阻塞接口,因为缓存已过期,但SDK又无法立即从服务端获得新的解析结果,为了不阻塞线程,该接口将返回空结果,需要调用方做降级到LocalDNS解析的处理。
如果App调用的是同步接口或异步接口,则SDK会发起解析请求从服务端获取新的解析,这个过程需要一定时间,则同步接口会阻塞线程直到获得新的解析结果,异步接口将在获得新的解析结果后才回调。
SDK提供设置选项,允许复用过期IP,设置为true
后,则上述两种情况,虽然缓存的IP过期了,但接口仍然可以立即返回这个过期的IP,从而减少DNS环节处理时间,提升网络请求性能。同时,SDK发现该IP过期,返回后,也会立即启动异步线程对这个域名进行解析,从而获取新的解析结果。
因此,开启这个选项的副作用非常小,特别是在,所解析域名本身的解析配置不会频繁变动时(如主站域名、静态网关域名等)。若域名确实发生解析变更,则开启该选项也只会影响该域名缓存过期后的第一个请求,因为SDK在被调用时发现IP过期,总是会立即发起对这个域名的解析更新。
默认允许。
当设置为true时,SDK在实时返回过期IP的同时依然会进行异步更新以获取最新的IP信息。
setExpiredIPEnabled
接口定义
void setExpiredIPEnabled(boolean enableExpiredIp)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)
参数说明
参数 | 类型 | 是否必填 | 说明 |
enableExpiredIp | boolean | 是 | 设置是否允许返回超过ttl 的ip。
|
是否开启本地缓存
持久化缓存功能旨在优化启动后的域名解析环节耗时,进而提升首屏加载速度。
开启后,HTTPDNS会将上一次解析到的结果保存到本地持久层,App重启后,每个域名首次解析会优先从持久层获取缓存结果,以实现最快的解析效率。也正因如此,存在第一次使用的IP为过期IP的可能性,即该缓存结果TTL已过期。但大多数情况下该IP依然可以正常使用,特别是对于解析记录比较稳定的域名。
setCachedIPEnabled
接口定义
void setCachedIPEnabled(boolean enableCacheIp)
void setCachedIPEnabled(boolean enableCacheIp, boolean cleanLocalCache)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp)
参数说明
参数 | 类型 | 是否必填 | 说明 |
enableCacheIp | boolean | 是 | 控制是否启用本地缓存。
|
cleanLocalCache | boolean | 否 | 设置读取本地缓存之后,是否清除本地缓存。 启用持久化缓存时生效。
默认是false。 |
是否开启网络变化自动解析
当设备网络变化时(如从WIFI网络切换到蜂窝网络,或从移动网络切换到联通网络),若HTTPDNS SDK继续返回之前缓存的解析IP,则可能导致业务网络请求发生跨网情况,影响请求性能和成功率。因此,SDK内部会监听网络变化事件,智能决定是否清理全局解析缓存。
此接口用于设置网络环境变化,SDK清理全局解析缓存后,是否自动刷新所有域名的解析结果,若开启,则保证切换网络后,业务网络请求也能立即拿到新的结果,降低域名解析环节耗时,进而提升请求性能。
开启此功能可能会轻微增加解析次数消耗。默认不开启。
WiFi、蜂窝、无网这三个状态的切换算网络切换。
4G与3G切换不算网络切换。
SIM卡切换也不会单独处理。
setPreResolveAfterNetworkChanged
接口定义
void setPreResolveAfterNetworkChanged(boolean enable)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setPreResolveAfterNetworkChanged(boolean enable)
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 设置是否在网络切换时,重新解析缓存中的所有域名。
|
超时配置
设置域名解析超时时间,默认为2000ms。
setTimeout
接口定义
InitConfig.Builder setTimeout(int timeoutInterval)
所属类
InitConfig.Builder
引入版本
2.0.2
废弃版本
2.4.0
替代接口
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
参数说明
参数 | 类型 | 是否必填 | 说明 |
timeoutInterval | int | 是 | 设置域名解析超时时间,时间单位为毫秒。 默认2000ms,最大5000ms。 |
代码示例
InitConfig.Builder()
.setTimeout(2 * 1000)
new InitConfig.Builder()
.setTimeout(2 * 1000);
setTimeoutInterval
接口定义
void setTimeoutInterval(int timeoutInterval)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
参数说明
参数 | 类型 | 是否必填 | 说明 |
timeoutInterval | int | 是 | 设置域名解析超时时间,时间单位为毫秒。 超时时长,默认2000ms,最大5000ms |
设置region节点
如果APP需要在海外环境使用HTTPDNS,为了提升解析效率,可以主动设置本SDK的启动服务节点。设置节点后,SDK会使用该节点进行域名解析和进行随后的调度节点列表更新。
setRegion
初始化设置region节点。
接口定义
InitConfig.Builder setRegion(String region)
所属类
InitConfig.Builder
引入版本
1.3.2
废弃版本
2.4.2
替代接口
InitConfig.Builder setRegion(Region region)
参数说明
参数 | 类型 | 是否必填 | 说明 |
region | String | 是 | region为节点,设置海外region,用于海外服务区域选择,当前仅支持hk(中国香港节点)、sg(新加坡节点)、de(德国节点)和us(美国节点),填写后返回当地的服务节点。 缺省时,使用中国内地服务节点。 |
代码示例
InitConfig.Builder()
.setRegion("hk");
new InitConfig.Builder()
.setRegion("hk");
设置HTTPDNS的域名黑名单
如果您需要对特定域名限制不使用HTTPDNS去进行域名解析,可以在这个接口里过滤掉这些域名,被过滤的域名会返回空的解析结果,您需要降级到local dns进行域名解析。
setDegradationFilter
接口定义
InitConfig.Builder setDegradationFilter(DegradationFilter filter)
所属类
InitConfig.Builder
引入版本
2.4.0
废弃版本
2.4.0
替代接口
InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)
参数说明
参数 | 类型 | 是否必填 | 说明 |
filter | 是 | 配置黑名单策略 |
setIPRankingList
接口定义
void setIPRankingList(List<IPRankingBean> ipRankingList)
所属类
HttpDnsService
引入版本
2.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
参数说明
参数 | 类型 | 是否必填 | 说明 |
ipRankingList | List<IPRankingBean> | 是 | 设置IP优选列表,设置该接口后,如果解析了相应的域名,则SDK会对返回的IP进行IP测速,对返回的列表进行动态排序,以保证第一个IP是可用性较好的IP。 |
setIPProbeList
接口定义
void setIPProbeList(List<IPRankingBean> ipProbeList)
所属类
HttpDnsService
引入版本
1.3.2
废弃版本
2.3.2
移除版本
2.3.2
替代接口
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
参数说明
参数 | 类型 | 是否必填 | 说明 |
ipProbeList | List<IPProbeItem> | 是 | 设置IP优选列表,设置该接口后,如果解析了相应的域名,则SDK会对返回的IP进行IP测速,对返回的列表进行动态排序,以保证第一个IP是可用性较好的IP。 |
设置自定义解析全局参数
该全局参数不影响自定义解析接口的额外参数设置,会和自定义解析接口的额外参数合并。
setSdnsGlobalParams
接口定义
void setSdnsGlobalParams(Map<String, String> params)
所属类
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代接口
InitConfig.Builder setSdnsGlobalParams(Map params)
参数说明
参数 | 类型 | 是否必填 | 说明 |
params | Map<String, String> | 是 | 用于自定义解析,全局参数,每个自定义解析请求都会携带这些全局参数。 |