Android Retrofit/OkHttp 以编程方式使用“8.8.8.8”进行 DNS 查找?

Android Retrofit/OkHttp Use `8.8.8.8` programatically for DNS lookup?

我正在尝试添加 Google DNS 查找,即“8.8.8.8”。在我的 android 应用程序中,我将 Retrofit 与 OkHttp 结合使用。

是否可以编程方式实现?

我看到了这个 post 但无法添加它 dns-android-okhttp

选择 Google 8.8.8.8 常规 DNS 是可能的,但很尴尬,您需要使用 Netty 或 dnsjava 等库编写自己的 DNS 实现。这是我刚刚制作的一个。

例如https://github.com/yschimke/okurl/blob/release/1.57/src/main/kotlin/com/baulsupp/okurl/network/NettyDns.kt

如果您想尝试 DNS over HTTPS 查询 Google(技术上不是 8.8.8.8),那么 OkHttp

中的实验模块支持它
OkHttpClient bootstrapClient = new OkHttpClient();

Dns google = new DnsOverHttps.Builder().client(bootstrapClient)
    .url(HttpUrl.get("https://dns.google.com/experimental"))
    .build();
OkHttpClient client = new OkHttpClient.Builder().dns(google).build();

Response result =
    client.newCall(new Request.Builder().url("https://google.com/robots.txt").build())
        .execute();

System.out.println(result.body().string());

它现在实际上在 dns-android-okhttp 我正在搜索,我正在寻找他正在为 Resolver 使用哪个库 dnsjava

compile 'dnsjava:dnsjava:2.1.7'

现在添加它后,我的代码可以正常工作了。