0

我需要编写一个实用方法,该方法将获取一个 url 并检查给定的 url 是否有效?

URL 可以是任何带有/不带协议的东西,例如 http、https 或 with 可以包含相对 url,例如 domain 是example并且 url 是“abc.com”,那么它就是一个相对 URL。它也可以是无效的 url 并且可以包含简单的字符串

我也列出了列入白名单的 URL,并且可以更改运行时youtube.comfacebook.com

我如何检查给定的网址在我的情况下是否有效,我正在做的一些基本检查如下:-

 String url = "http://youtube.com";
    if(!StringUtil.isEmpty(url))
    {
        if (url.startsWith("http:") || pathToImage.startsWith("https://")) {
            // check if url is from whitlist domains

        } else {
            // do nothing, url is not internal domain.
        }
    }

http现在我的问题是如何正确地从位于or之后的 URL 中提取域名https

注意:-我正在使用 apache StringUtils 并且很可能 url 可以像https://absdsbsbor https://anmds.txt。还让我知道它是否适合正则表达式匹配?

4

1 回答 1

4

正确的方法是使用URI类。

您可以将它们视为字符串并查找特定的模式或子字符串,但是有各种“棘手”的方法来编写可用于传递不应传递的 URL 的 URL。(不过,如果您使用的是白名单而不是黑名单,那就更难处理了。)

无论如何,方法应该是使用URI类来解析URL字符串,然后获取并匹配protocolhost组件。

一旦你有了域名,你如何有效地将它与白名单匹配有点麻烦,但我会考虑使用 TreeSet,并考虑使用它的floorceiling方法来加速域前缀匹配。

(如果正则表达式匹配会给您带来良好的性能,我会感到惊讶。)

于 2017-06-11T14:55:24.700 回答