如何检查java中子域的有效性?

时间:2016-12-14 18:19:16

标签: java networking dns subdomain

我有一个域abc.jp

例如:
我想检查这是否有效我可以在此示例中添加另一个子级域。怎么做?如果可能的话,请上传一些java代码作为参考吗?

谢谢

2 个答案:

答案 0 :(得分:0)

Guava的InternetDomainName为这个问题提供了一个很好的解决方案。

String input = "abc.jp";
InternetDomainName domain = InternetDomainName.from(input);
InternetDomainName subdomain = domain.child("www");
subdomain.toString(); // "www.abc.jp";

如果输入域或子域无效,您将获得IllegalArgumentException

您还可以执行domain.isUnderPublicSuffix()之类的检查,具体取决于您需要多少验证。

答案 1 :(得分:0)

您的示例ac.jp是有效域,但不是IP可解析域。所以我建议使用whois服务器。如果要检查所有域,则需要保留许多whois服务器。如果你只做日本,那么下面的代码片段应该有效。

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");
        }
    }
}