Java - 使用不正确的语法验证 url,即一个离开 getHost == ""

问题描述 投票:0回答:0

假设我们有三个 URL 作为字符串:

String urlString1 = "https://syntaxsyntax";
String urlString2 = "https:/syntaxsyntax";
String urlString3 = "https:///////google.com/";

当我们根据上面的每个String创建一个

new URL
,在

之后
String host = url.getHost(); 

我们会得到

host == ""
(空字符串)。结果,经过下一步

new Inet(InetAdress.getByName(host).getHostAddress())

我得到空地址或本地地址。

例如,我们知道前两个字符串作为 URL 是不正确的,我应该能够在处理进一步代码之前以某种方式验证它们。但是第三个字符串是正确的 - 或者至少浏览器在插入地址栏时正确打开页面。

我尝试创建 URL 和 URI,从中捕获异常 - 但都通过了。

我试过了

uri.normalize()
- 但它没有改变任何东西

顺便说一句,有人能解释一下,为什么

uri.normalize()
会把
https:////xyz
变成
https:/xyz
而不是
https://xyz
吗?为什么它不会在协议后添加缺失的斜杠
https:/qwerty

是否有一个选项可以在不使用语法模式的情况下验证上述 URL?

java url syntax uri protocols
© www.soinside.com 2019 - 2024. All rights reserved.