我正在使用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