這列印null:
System.out.println(new URI("http://a.1a/").getHost());
但這列印a.1a:
System.out.println(new URL("http://a.1a/").getHost());
如果所有 URL 都是 URI(但不是所有 URI 都是 URL),那么具有主機組件的有效 URL 不應該也具有與 URI 相同的主機組件(而不是 null)嗎?
uj5u.com熱心網友回復:
查看Javadoc:
https://docs.oracle.com/javase/8/docs/api/java/net/URI.html:
回傳:此 URI 的主機組件,如果主機未定義,則回傳 null"
好的,那么為什么您的特定 URI(“http://a.1a/”)的主機部分未定義?查看 RFC:
https://www.ietf.org/rfc/rfc2396.txt
主機名采用 [RFC1034] 第 3
節和 [RFC1123] 第 2.1 節中描述的形式:由
“.”分隔的域標簽序列,每個域標簽以字母數字字符開頭和結尾,
還可能包含“-”字符。 完全限定域名的最右邊的域標簽永遠不會以數字開頭...要真正“統一”作為資源定位器,URL 主機名應該是完全限定的域名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/445325.html
上一篇:用url中的字串替換域擴展名
