Java 正确的FQDN Uri由apache commons UrlValidator无效
首先,我使用的是ApacheCommons提供的当前版本的Java 正确的FQDN Uri由apache commons UrlValidator无效,java,regex,apache,Java,Regex,Apache,首先,我使用的是ApacheCommons提供的当前版本的UrlValidator库。我正在尝试验证FQDN URL,如tcp://cor.rect.url:61616,但不幸的是,验证程序使此URL无效。我正在使用以下参数创建验证器: new UrlValidator(UrlValidator.ALLOW_ALL_SCHEMES + UrlValidator.ALLOW_LOCAL_URLS) 以前有人遇到过类似的问题吗?有什么解决方法吗?根据1的源代码,它调用了 1完全限定的类名是org.
UrlValidator
库。我正在尝试验证FQDN URL,如tcp://cor.rect.url:61616
,但不幸的是,验证程序使此URL无效。我正在使用以下参数创建验证器:
new UrlValidator(UrlValidator.ALLOW_ALL_SCHEMES + UrlValidator.ALLOW_LOCAL_URLS)
以前有人遇到过类似的问题吗?有什么解决方法吗?根据1的源代码,它调用了 1完全限定的类名是
org.apache.commons.validator.routines.urlvidator
,不要与不推荐的实现org.apache.commons.validator.urlvidator混为一谈
DomainValidator
调用以检查TLD。通过启用ALLOW_LOCAL\u url
选项,它首先根据isValidLocalTld
中的本地TLD列表检查域名,然后根据isValidInfrastructureTld
、isValidGenericTld
和isvalidCountryCoded>检查域。但是,url
不出现在任何列表中
在允许本地URL的情况下,DomainValidator
对本地URL进行最终检查(例如,localhost
),但您的URL也不属于这种情况
因此,您的URL被UrlValidator
拒绝
至于解决方案,您似乎可以定义自己的解决方案并将其传递给构造函数。最好使用的源代码作为参考,从授权部分解析域,并提供自己的逻辑来验证域。根据1的源代码,它调用
1完全限定的类名是org.apache.commons.validator.routines.urlvidator
,不要与不推荐的实现org.apache.commons.validator.urlvidator混为一谈
DomainValidator
调用以检查TLD。通过启用ALLOW_LOCAL\u url
选项,它首先根据isValidLocalTld
中的本地TLD列表检查域名,然后根据isValidInfrastructureTld
、isValidGenericTld
和isvalidCountryCoded>检查域。但是,url
不出现在任何列表中
在允许本地URL的情况下,DomainValidator
对本地URL进行最终检查(例如,localhost
),但您的URL也不属于这种情况
因此,您的URL被UrlValidator
拒绝
至于解决方案,您似乎可以定义自己的解决方案并将其传递给构造函数。最好使用的源代码作为参考,从授权部分解析域,并提供自己的逻辑来验证域。UrlValidator
,它调用以检查URL是否具有有效的TLD(isValidInfrastructureTld
,isValidGenericTld
,以及isValidCountryCodeTld
),使用“允许本地URL”,它将检查isValidLocalTld
,但URL
不在TLD列表中,因此您的URL被拒绝。这是正确的,谢谢urlvalidater
,它调用该URL检查是否具有有效的TLD(isValidInfrastructureTld
,isValidGenericTld
,和isValidCountryCodeTld
),使用允许本地URL,它检查isValidLocalTld
,但URL
不在TLD列表中,因此您的URL被拒绝。这是正确的,谢谢