【问题标题】:Why is this URI valid by RCF 2396 standards?为什么这个 URI 对 RCF 2396 标准有效?
【发布时间】:2015-06-14 00:26:57
【问题描述】:

我正在为我一直在开发的应用程序加载器使用非字符串类型。作为一个错字,我忘记包含特定 URI 的协议部分。由于 URI 无效,我预计 java 测试会失败...但是此语句似乎有效...

URI uri = URI.create("contacts.addresses.genericAddress")

对我来说,使用点作为方案部分没有标准......我认为方案部分总是需要的?

有人知道为什么吗?

【问题讨论】:

  • 如果 Java 代码接受 URI 并不一定意味着 URI 根据 RFC 2396 是有效的。
  • 同上。 Java 假定规范暗示了一系列事物,但实际上并不是规范的一部分,因此 Java 比规范允许的要宽松一些。也就是说,您的字符串对我来说看起来像是一个有效的主机名。
  • 啊,这里:“由 RFC 2396 中的语法指定,附录 A”和附录 A 允许 URI 成为 相对路径,没有主机名或方案。所以“this.and.that”可能只是像“this.html”这样的文件名(点作为文件元素名是有效的——即,路径段中的 pchars)。
  • @SimeonVisser 重要的是要注意,使用该方法是因为它声明它强制执行正确的约定......我只是没有充分阅读规范以了解它为什么有效。但是java代码确实符合它。

标签: java uri


【解决方案1】:

我将添加我的评论作为答案,因为我认为它是正确的:

来自 Java URI 文档:“由 RFC 2396 中的语法指定,附录 A”和附录 A 允许 URI 成为 相对路径, 没有主机名或方案。所以“this.and.that”可能只是像“this.html”这样的文件名(点作为文件元素名是有效的——即路径段中的 pchars)。

【讨论】:

  • 这很有道理。在发布该问题之前,我通读了该文档。我一定错过了这个。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多