我有一个包含多个TXT记录的域名。 Dig显示了所有这些。名称服务器以非确定性顺序返回它们。尝试使用javax.naming.directory
类检索这些记录只会导致名称服务器返回的第一个名称 - 有时它是一个,有时是另一个,因为名称服务器返回的顺序不同。
这是一段代码片段:
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial",
"com.sun.jndi.dns.DnsContextFactory");
DirContext dirContext = new InitialDirContext(env);
Attributes attrs = dirContext.getAttributes(name, new String[] { "TXT" });
此时,attrs
只包含一个Attribute
。这是预期的行为吗?如何让Java检索所有TXT记录?
答案 0 :(得分:4)
在我自己的测试中,(单个)返回属性包含我尝试过的域中的两个TXT
记录:
Attributes attrs = dirContext.getAttributes("paypal.com", new String[] { "TXT" });
Attribute txt = attrs.get("TXT");
NamingEnumeration e = txt.getAll();
while (e.hasMore()) {
System.out.println(e.next());
}
如果这对您不起作用,dnsjava库肯定会允许您获取所有记录。