3. 解析接口

3.1 解析接口的返回值类型

  • 说明:使用BDHttpDnsResult类型对解析结果进行封装

  • 方法:

    • int getResolveStatus();

      • 说明:域名解析结果的状态码,可能取值为:

        状态码取值 说明
        STATUS_OK 解析成功
        STATUS_ERR_CACHE_MISS 由于cache未命中导致的解析失败,仅在解析时指定cache only标志时有效
        STATUS_ERR_DNS_RESOLVE dns解析失败
    • int getResolveType();

      • 说明:域名解析结果的来源,可能取值为:

        解析来源类型取值 说明
        RESOLVE_NONE 没有有效的解析结果
        RESOLVE_FROM_HTTPDNS_CACHE 解析结果来自httpdns cache
        RESOLVE_FROM_HTTPDNS_EXPIRED_CACHE 解析结果来自过期的httpdns cache
        RESOLVE_FROM_DNS_CACHE 解析结果来自dns cache
        RESOLVE_FROM_DNS 解析结果来自dns解析
    • ArrayList getIpv4List();

      • 说明:IPv4类型的域名解析结果列表,可能为null

3.2 同步域名解析接口

  • 接口形式:BDHttpDnsResult syncResolve(String host, boolean cacheOnly);

  • 参数:

    • String host:待解析域名

    • boolean cacheOnly:是否仅使用HTTPDNS cache

      • 为True时,若HTTPDNS cache未命中,则接口返回空结果,此时接口表现为同步非阻塞接口

      • 为False时,若HTTPDNS cache未命中,则SDK继续进行DNS解析,此时接口表现为同步阻塞接口

  • 返回值:

    • 使用 BDHttpDnsResult封装的解析结果

3.3 异步域名解析接口

  • 接口形式:void asyncResolve(String host, final BDHttpDns.CompletionHandler
    callback)

  • 参数:

    • String host:待解析域名

    • BDHttpDns.CompletionHandler
      callback:用户实现的异步回调接口,回调函数的参数为使用BDHttpDnsResult类型封装的解析结果

      • 回调接口定义为:

        public interface CompletionHandler {
        void completionHandler(BDHttpDnsResult result);
        }

  • 异常:

    • 如果SDK内部没有足够的线程处理异步请求,会抛出RejectedExecutionException异常