Не получается запись DNS с использованием org.xbill.DNS lib

Я написал следующий код, чтобы получить запись MX для любого домена, здесь google.com

public class DNSRec {
public static void main(String... args) 
{
    try{
        Record [] records = new Lookup("http://www.google.com", Type.NS).run();
        for (int i = 0; i < records.length; i++) {
            NSRecord ns = (NSRecord) records[i];
            System.out.println("Nameserver " + ns.getTarget());
        }
    }catch(Exception e){
        System.out.println("Exception: "+e.getMessage());
    }
}}

Вывод: исключение: ноль

Я использовал org.xbill.DNS lib.

Что не так в коде выше?

Должен ли я использовать эту библиотеку или есть какой-либо другой лучший способ получить записи DNS?

Небольшой пример;) Добро пожаловать:) .,,, Ваш ответ будет высоко оценен

Мое подключение к интернету в порядке.

1 ответ

Здесь две вещи не так:

  1. Код ищет записи MX и затем пытается привести результат к NSRecord.
  2. Вы не должны передавать протокол в Lookup конструктор класса. Вы выполняете поиск по серверу имен для домена, а не для URL. Следовательно, вы должны использовать google.com вместо http://www.google.com

Дайте этому попробовать:

public class DNSRec {
public static void main(String... args) 
{
    try{
        Lookup lookup = new Lookup("google.com", Type.NS);
        Record[] records = lookup.run();

        for (int i = 0; i < records.length; i++) {
            NSRecord ns = (NSRecord) records[i];
            System.out.println("Nameserver " + ns.getTarget());
        }

    }catch(Exception e){
        System.out.println("Exception: "+e.getMessage());
    }
}}
Другие вопросы по тегам