移动域名解析HTTPDNS

    2.设置接口

    2.1 获取服务实例

    • 接口形式:BDHttpDns getService(Context context);
    • 参数:Context context,用户需传入app的上下文对象
    • 返回值:BDHttpDns单例对象,用于HTTPDNS解析

    2.2 设置HTTPDNS的账号ID

    • 接口形式:void setAccountID(String accountID);
    • 参数:String accountID

      • 字符串长度上限为64字节
    • 异常:

      • 对于非法输入,会抛出IllegalArgumentException异常

    2.3 设置secret配置信息

    • 接口形式:void setSecret(String secret);
    • 参数:String secret

      • 字符串长度上限为64字节
    • 异常:

      • 对于非法输入,会抛出IllegalArgumentException异常

    2.4 设置预加载域名

    • 接口形式:void setPreResolveHosts(ArrayList hosts);
    • 参数:ArrayList hosts
    • 说明:

      • 用于初始化后,对常用域名进行预加载,避免初次请求时缓存不命中
      • 调用该接口后,立刻在后台发起异步解析请求

    2.5 设置HTTPDNS缓存过期处理策略

    • 接口形式:void setCachePolicy(CachePolicy policy)
    • 参数:CachePolicy policy

      • policy定义为enum CachePolicy 类型, 取值为:

        • POLICY_AGGRESSIVE:激进的使用过期缓存策略
        • POLICY_TOLERANT:一定限度容忍过期缓存
        • POLICY_STRICT:严格不使用过期缓存
    • 说明:

      • POLICY_AGGRESSIVE

        • 说明:激进的策略,无条件地使用过期的HTTPDNS缓存
        • 优势:最大程度的避免使用DNS解析,减小劫持的风险
        • 劣势:HTTPDNS服务异常时,无法降级至DNS,无法感知域名切换
      • POLICY_TOLERANT

        • 说明:一定程度的容忍过期缓存的策略,使用过期缓存,直至获取下一次HTTPDNS服务端的请求结果

          • 若请求成功,则更新缓存
          • 若请求失败,则删除缓存,提供降级机制
        • 优势:常态下避免由于HTTPDNS缓存过期导致降级至DNS的问题,同时在HTTPDNS服务故障时提供降级至DNS的机制
        • POLICY_TOLERANT是默认的过期缓存处理策略
      • POLICY_STRICT

        • 说明:保守的策略,严格不使用过期的HTTPDNS缓存
        • 优势:严格实现ttl语义
        • 劣势:在app长时间idle后,恢复前台时会有较大概率查到缓存过期,此时若不使用HTTPDNS结果,降级至DNS,存在域名劫持等风险

    2.6 设置网络切换处理策略

    • 接口形式:void setNetworkSwitchPolicy (boolean clearCache , boolean httpDnsPrefetch);
    • 参数

      • boolean clearCache :网络切换后是否清除HTTPDNS及DNS cache,默认为True。
      • boolean httpDnsPrefetch:网络切换后是否对缓存中所有域名进行HTTPDNS预取,默认为True
    • 说明:

      • 网络切换时,若继续使用cache中的解析结果,则可能造成跨网访问的问题,因此默认的网络切换处理策略是清除HTTPDNS cache中的全部内容
      • 网络切换时,尽快获取新的HTTPDNS解析结果能减少使用跨网解析结果的风险,但刷新请求会消耗一定的流量,默认策略是刷新HTTPDNS cache中全部域名的解析结果

    2.7 设置HTTPDNS网络请求使用的协议

    • 接口形式:void setHttpsRequestEnable(boolean isHttps);
    • 参数:boolean isHttps

      • True:使用https,默认为True
      • False:使用http

    2.8 设置debug log开关

    • 接口形式:void setLogEnable(boolean debug);
    • 参数:boolean debug

      • 默认为False
    上一篇
    1.SDK集成方式
    下一篇
    3.解析接口