如何在java中检查子域的有效性? [关闭]
Posted
技术标签:
【中文标题】如何在java中检查子域的有效性? [关闭]【英文标题】:How to check validity of a subdomain in java? [closed] 【发布时间】:2017-04-30 04:28:16 【问题描述】:我有一个域 abc.jp 例如:我想检查这是否有效,我可以在此示例中添加另一个子级域。怎么做?如果可能,请上传一些java代码作为参考? 谢谢
【问题讨论】:
这个答案有什么问题:***.com/a/5933518/5749您的代码示例会很棒! @Pullie 当我使用 InetAddress 并测试 abc.jp 时,它显示 ok。但是当我使用 ac.jp 时,它会显示 failed 。但是,ac.jp 存在(例如:link)代码:import java.net.InetAddress; import java.net.UnknownHostException; public class test public static void main(String[] args) String input = "ac.jp"; try InetAddress iaddr = InetAddress.getByName(input); System.out.println("ok"); catch (UnknownHostException uhe) System.out.println("failed");
啊好的。我明白你的意思了。我认为 Whois 会在这里为您服务,因为您无法进行 DNS 查询。
【参考方案1】:
您的示例 ac.jp 是有效域,但不是 IP 可解析域。所以我会建议一个whois服务器。如果要检查所有域,则需要保留多个 whois 服务器。如果你只做日本,那么下面的 sn-p 应该可以工作™。
import org.apache.commons.net.whois.*;
public class Main
public static void main(String[] args)
WhoisClient whois = new WhoisClient();
String whoishost = "whois.jprs.jp";
// String whoishost = "whois.verisign-grs.com"; // for .com domains
String domain = "ac.jp";
try
whois.connect(whoishost);
String whoisData = whois.query(domain);
if (whoisData.toUpperCase().contains("NO MATCH"))
System.out.println("Domain is not registered. According to whoishost: " + whoishost);
else
System.out.println("Domain is registered. According to whoishost: " + whoishost);
catch (java.io.IOException ioex)
System.out.println("failed");
【讨论】:
感谢您的积极回应。现在我需要测试另一个 ccTLD;那是 .mu 根据您上面的代码清单,您包含了以下内容:String whoishost = "whois.verisign-grs.com"; // for .com domains
您知道 .mu 域的 whoishost 的字符串吗?如果没有,请告诉我在哪里可以找到它。
他 @Tashley 是 Google 的基本技能。投入一些精力。 nirsoft.net/whois_servers_list.html
非常感谢你,伙计。现在可以使用了。【参考方案2】:
Guava 的InternetDomainName
很好地解决了这个问题。
String input = "abc.jp";
InternetDomainName domain = InternetDomainName.from(input);
InternetDomainName subdomain = domain.child("www");
subdomain.toString(); // "www.abc.jp";
如果输入域或子域无效,您将获得IllegalArgumentException
。
您也可以像domain.isUnderPublicSuffix()
一样进行检查,具体取决于您想要多少验证。
【讨论】:
它不验证域。我用另一个 ccTLD 尝试过;那就是它生成的 .mu InternetDomainNamename=qqq.mu,即使这个域不存在。无论如何,感谢您尝试解决我的问题。 好的,我误解了你的问题。我将“有效”解释为“格式正确且仅包含有效字符”。我没有意识到您还想检查它是否是互联网上的真实域。以上是关于如何在java中检查子域的有效性? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章