# 移动解析HttpDNS

从基础库 2.19.2 开始支持

开发者调用wx.request时,可以开启移动解析 HttpDNS 服务。 该服务基于 Http 协议向服务商的 DNS 服务器发送域名解析请求,替代了基于 DNS 协议向运营商Local DNS发起解析请求的传统方式,可以避免Local DNS造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。

# 小程序开发者使用移动解析说明

  1. 前往微信服务市场选购 HttpDNS 资源,并在服务详情页 - 接入文档获取Service ID。
  2. 小程序调用wx.request,将 enableHttpDNS 参数设置为true,并在 httpDNSServiceId 参数中填入选用的服务商Service ID。

# 代码示例

wx.request({
  url: 'example.php', //仅为示例,并非真实的接口地址
  enableHttpDNS: true,
  httpDNSServiceId: 'wxa410372c837a5f26',
  success(res) {
    console.log('request success', res)
  },
  fail(res) {
    console.error('request fail', res)
  }
})

# 计费说明

  1. 使用服务所产生的费用会按照实际调用服务商接口情况进行计费,定价策略由服务提供方制定,开发者需自行前往微信服务市场进行购买、续费等操作。
  2. 微信侧每次代开发者调用服务商接口时,微信侧会进行缓存,缓存策略由服务商返回的 ttl 决定,因此不一定每次调用 request 接口都会产生费用。
  3. 若开发者的服务可用额度为0,仍在 wx.request 接口中声明使用服务商提供的移动解析能力时,会触发 fail 回调,请开发者根据回调错误码妥善处理。

# 注意事项

  1. HttpDNS 不兼容网络代理

当用户设备使用了网络代理,同时又开启了 enableHttpDNS 时,request 接口会调用失败,返回类似{"errMsg":"request:fail net::ERR_PROXY_CONNECTION_FAILED, custum ip is invalid, 152.136.248.40:443"}的错误。

为解决此问题,从微信 8.0.17 开始支持通过 wx.getNetworkType 接口检查用户是否开启了网络代理,开发者可判断若用户使用了网络代理,则关闭 enableHttpDNS。用法:

wx.getNetworkType({
   success(res) {
    console.log(res.hasSystemProxy) // 开启网络代理时为 true,否则为 false
   }
})

# HttpDNS 相关错误码

错误码 说明
600000 网络错误
602000 网络请求错误
602001 系统错误
602002 http请求 httpdns 服务商错误
602101 小程序未在服务市场购买 httpdns 服务
602102 小程序在 httpdns 服务市场资源包过期
602103 小程序在 httpdns 服务市场额度不足
602104 httpdns服务商返回结果为空
602105 调用 httpdns 服务商结果超时
602106 httpdns服务商返回数据不合法
602107 httpdns域名解析结果为空
602108 不支持的 httpdns 服务商id

# 移动解析服务提供商接入说明

为了保护微信客户端的安全,小程序使用的移动解析服务需要通过微信侧安全认证,认证后可在微信服务市场上架。

微信侧欢迎更多服务商为小程序提供移动解析服务。申请接入按照以下模板发送邮件,我们会有专人与您联系。

收件人:servicemarket@tencent.com
主题:【上架服务市场】XXX(服务商)申请上架 HttpDNS 服务
正文:需要写明服务商的基本资料,包括不仅限于服务商名称、业务范围、技术证书、合作意向、联系方式等