如何在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中检查子域的有效性? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的本地主机上创建子域? [关闭]

如何检查字节数组是不是为有效的pdf文件[关闭]

如何在 Java 中检查有效的 URL?

如何在php中验证正确的域名和子域

如何在Swift中检查URL的有效性?

如何使用GSON检查JSON在Java中是否有效?