无法转换的URL的示例.toURI()?

时间:2014-04-30 09:24:15

标签: java url uri

URL's .toURI() method的javadoc提到它可以抛出URISyntaxException if:

  

[...]此网址未严格按照RFC2396格式化,无法转换为URI。

但是,到目前为止,我没有成功尝试触发此异常。更重要的是,无论如何,你需要“传递”URL构造函数测试。

那么,是否存在有效URL的例子,该例子不是有效的URI

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

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

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

任何其他字符都需要使用百分比编码(%hh)进行编码。 URI的每个部分都对进行百分比编码的单词需要表示的字符有进一步的限制。

不同的角色在不同的角落也是合法的。例如,根据RFC 2396,未转义的'?'在片段部分是合法的而不是路径部分。