You need to enable JavaScript to run this app.
导航
如何接入移动解析 HTTPDNS
最近更新时间:2024.01.11 10:28:02首次发布时间:2023.06.06 20:23:22

本文档介绍如何在您的客户端 App 中接入火山引擎移动解析(HTTPDNS)。

如何把移动解析 HTTPDNS 的解析结果注入到网络库

App 在发送一个网络请求请求时,会首先调用 App 中集成的网络库。网络库默认通过系统 Stub Resolver 向递归 DNS 服务器发送 DNS 查询请求,获取域名的 IP 地址。递归 DNS 服务器一般是 Local DNS 服务器或公共 DNS 服务器。

说明

例如,Java 的 getAllByName 方法就是通过调用系统 Stub Resolver 获取 DNS 解析结果的。

如果您希望网络库可以使用移动解析 HTTPDNS 服务端返回的解析结果:

  • 如果网络库允许您自定义 Stub Resolver:您可以通过移动解析 HTTPDNS 的客户端 SDK 或 HTTP API 为您的移动端 App 自定义一个 Stub Resolver。该自定义 Stub Resolver 可以向网络库注入移动解析 HTTPDNS 服务端返回的解析结果。
  • 如果网络库不允许您自定义 Stub Resolver
    • 如果客户端系统允许使用 DoH 协议:在系统侧启用 DoH 协议。这样,系统 Stub Resolver 就会通过 DoH 协议获取移动解析 HTTPDNS 服务端返回的解析结果。
    • 如果客户端系统不允许使用 DoH 协议:您需要把网络库的网络请求改写为 IP 直连请求。

下图以 HTTP 请求为例,演示了如何通过自定义 Stub Resolver、DoH 协议或 IP 直连请求确保网络库使用移动解析 HTTPDNS 服务端返回的解析结果。

alt

客户端 SDK

客户端 SDK 是一个自定义的 Stub Resolver。您只需要把网络库所使用的 DNS 服务从系统 Stub Resolver 更改为自定义的 Stub Resolver,就可以接入移动解析 HTTPDNS。参见 SDK 集成方案概述

说明

如果网络库不允许自定义 Stub Resolver:

  • 如果客户端系统允许使用 DoH 协议:您可以在系统侧启用 DoH 协议。参见 什么是 DoH
  • 如果客户端系统不允许使用 DoH 协议:您需要把网络库的网络请求改写为 IP 直连请求。

客户端 SDK 还支持以下功能:

  • 异步解析:您可以通过回调获取 DNS 解析结果。DNS 解析不会阻塞 App 的进程。
  • 解析记录缓存机制:参见 工作原理
  • 获取最佳的 HTTPDNS 服务端动态 IP 地址:客户端 SDK 可以动态获取最佳的 HTTPDNS 服务端 IP 地址,并通过该 IP 地址获取 DNS 解析结果。

HTTP API

如果您的移动端 App 无法集成客户端 SDK,您可以使用 HTTP API,并自行把移动解析 HTTPDNS 的解析结果注入到网络库。参见 HTTP API 集成方案概述