假设我们有三个 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?