Android Retrofit / OkHttp Использовать `8.8.8.8` программно для поиска DNS? - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь добавить Google DNS lookup, который называется 8.8.8.8.в моем приложении для Android я использую Retrofit с OkHttp.

Возможно ли это программно?

Я видел этот пост, но не смог добавить его dns-android-okhttp .

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Если вы хотите попробовать DNS через 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());
0 голосов
/ 23 сентября 2018

Сейчас он работает на самом деле в dns-android-okhttp Я искал, я искал, какую библиотеку он использует для Resolver, которая была dnsjava

скомпилируйте 'dnsjava: dnsjava: 2.1.7'

И теперь, после его добавления, мой код работает правильно.

0 голосов
/ 23 сентября 2018

Возможно, но неудобно подключиться к обычному DNS Google 8.8.8.8, вам нужно написать собственную реализацию DNS, используя такие библиотеки, как Netty или dnsjava.Вот один, который я только что взбил.

Например https://github.com/yschimke/okurl/blob/release/1.57/src/main/kotlin/com/baulsupp/okurl/network/NettyDns.kt

...