2011-04-21 64 views
0

我似乎无法弄清楚如何让这段代码正常工作。难道我做错了什么?程序在Record [] records = lookup.run();上失败。线。Java DNS API不起作用

import java.util.Iterator; 

    import org.xbill.DNS.ARecord; 
    import org.xbill.DNS.Lookup; 
    import org.xbill.DNS.Record; 
    import org.xbill.DNS.TXTRecord; 
    import org.xbill.DNS.TextParseException; 
    import org.xbill.DNS.Type; 
    Lookup lookup; 
    try { 
     lookup = new Lookup("google.com", Type.ANY); 
     Record[] records = lookup.run(); 

     if (lookup.getResult() == Lookup.SUCCESSFUL) { 
      String responseMessage = null; 
      String listingType = null; 
      for (int i = 0; i < records.length; i++) { 
       if (records[i] instanceof TXTRecord) { 
        TXTRecord txt = (TXTRecord) records[i]; 

        for (Iterator j = txt.getStrings().iterator(); j.hasNext();) { 
         responseMessage += (String) j.next(); 
        } 
       } else if (records[i] instanceof ARecord) { 
        listingType = ((ARecord) records[i]).getAddress() 
          .getHostAddress(); 
       } 
      } 
     } 
    }catch (TextParseException e) { 
     e.printStackTrace(); 
    } 
+1

如果失败了通过打印堆栈跟踪,发布堆栈跟踪过。 – 2011-04-21 16:03:45

回答

1

你是什么意思不起作用?请按照先前的要求粘贴任何异常追踪。我能够很好地运行代码,我将输出添加到记录中以查看结果。下面是代码:

​​

这里是输出:

ARecord address : 74.125.224.49 
ARecord address : 74.125.224.51 
ARecord address : 74.125.224.52 
ARecord address : 74.125.224.48 
ARecord address : 74.125.224.50 
TXRecord nullv=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all 
+0

如果相同的代码不适用于OP,但它适用于您,它可能是OP系统上的网络配置问题。我想这个功能需要互联网连接才能开始。 – gnomed 2011-04-21 18:11:48

+0

是的,但在这种情况下,他应该有一个例外.. – lobster1234 2011-04-21 18:34:47

+0

我在eclipse中运行这个。行Record [] records = lookup.run();返回null。我有一个互联网连接,所以我知道这不是问题。你使用的是哪个版本的dnsjava?或者它是网络配置问题? 没有堆栈跟踪被打印,它不会先过去,如果语句。如果我注释掉第一个if语句,那么它会抛出一个空指针异常。 – David 2011-04-21 18:45:15