我正在使用java.net.URL.getPort()從URL中提取端口號。大多數情況下,這很有效。然而,當URL包含一個右括號字符 「]」 失敗:當URL包含「]」時,使用URL.getPort()提取端口號時出現問題
new URL("http://abc.com:123/abc.mp3").getPort();
returns: (int) 123
但如果URL中包含 「]」 我得到:
new URL("http://abc.com:123/abc].mp3").getPort();
returns: (int) -1
我在做什麼錯?編輯#1:作爲測試,我將這個相同的代碼粘貼到非Android Java應用程序中,並且端口號被正確地返回,所以這似乎是Android SDK的一個異常。
換句話說,方括號不是有效的URL:http://www.ietf.org/rfc/rfc3986.txt – CommonsWare 2011-01-29 21:19:11
這會導致被拋出,因爲java.net.MalformedURLException一切都被編碼,而不僅僅是無效的字符。 – 2011-01-29 21:44:07
@DiskCrasher:你說得對。我更新並使用了「URI」類。現在它工作,但API是笨拙的:( – Jonas 2011-01-30 00:24:27