无法转换为URI的URL示例?(关于IT技术)

8
URL.toURI()方法的javadoc提到,如果:

[...]此URL未严格按照RFC2396格式化,因此无法转换为URI,则可能会引发URISyntaxException

然而,我迄今为止一直未能成功触发此异常。更重要的是,你需要“通过”URL构造函数测试。

那么,是否存在一个有效的URL示例,它不是有效的URI

2个回答

5

URL类在容忍语法不正确的URL时特别宽容。如果我没记错,它只验证是否有已知协议处理程序来处理该方案,并接受方案特定部分中的所有内容。

产生URISyntaxException最简单的方法可能是这样的:

new URL("http:// ").toURI();

嗯,我实际上从未尝试过那个!是的,它确实触发了那个异常。唉。 - fge
请注意,这不仅涉及语法上不正确的URL。例如,http://exámple.com/ /foo 是一个有效的URL(虽然根据旧的RFC定义不是有效的URI),可以使用java.net.URL正常工作,但会破坏java.net.URI - smola

2

它可能包含以下任何字符:

 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=. 

任何其他字符都需要使用百分号编码(%hh)进行编码。URI的每个部分还有进一步的限制,关于哪些字符需要用百分号编码表示。
同样,不同的字符在不同的点上是合法的。例如,根据RFC 2396,未经转义的“?”在片段部分是合法的,但在路径部分不合法。

那要看情况啦 ;) 所有这些都在RFC 3986中定义,但URL RFC并不像前者那么易读... - fge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接