【问题标题】:Is there a way to specify different DNS lookup for each request with okhttp?有没有办法使用 okhttp 为每个请求指定不同的 DNS 查找?
【发布时间】:2021-03-23 09:50:24
【问题描述】:

我想通过一些参数分发请求。 例如,使用 http DNS 时。

有没有办法为每个请求指定不同的 DNS 解析器? 谢谢!

【问题讨论】:

    标签: dns okhttp resolver


    【解决方案1】:

    由于connection reuse,无法保证在开始您的请求之前会使用 DNS。为了严格实现您的要求,您应该为每个请求集群创建一个具有不同 DNS 实现的新客户端。

      val client1 = client.newBuilder().dns(externalDns).build()
      val client2 = client.newBuilder().dns(intranetDns).build()
    

    但如果是按主机名进行拆分,那么您可以覆盖通用 DNS 并使其执行您需要的任何操作。

    您应该使用事件侦听器确认您想要的行为。

    connectionsevents logging 上的文档。

    一个伟大的post on debugging 连接重用。

    【讨论】:

    • 我现在看到并使用 HostnameVerifier 来避免该问题。但是太丑了:(
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多