2011-04-21 108 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