gpt4 book ai didi

java.net.URL 构造 URL 时出现错误?

转载 作者:行者123 更新时间:2023-12-01 22:03:09 24 4
gpt4 key购买 nike

构造 new URL(new URL(new URL("http://localhost:4567"), "abc"), "def") 产生(恕我直言,错误地)这个 url: http://localhost:4567/def

虽然构造 new URL(new URL(new URL("http://localhost:4567"), "abc/"), "def") 产生正确的(我想要的) url: http://localhost:4567/abc/def

区别在于 abc 构造函数参数中的尾部斜杠。

这是预期的行为还是应该在 URL 类中修复的错误?
毕竟,当您使用某些辅助类进行 URL 构造时,我们的想法是不用担心斜杠。

最佳答案

引用 new URL(URL context, String spec) 的javadoc :

Otherwise, the path is treated as a relative path and is appended to the context path, as described in RFC2396.

请参阅 RFC2396 的第 5 节“相对 URI 引用”规范,特别是第 5.2 节“将相对引用解析为绝对形式”,第 6a 项:

All but the last segment of the base URI's path component is copied to the buffer. In other words, any characters after the last (right-most) slash character, if any, are excluded.

说明

在网页上,“Base URI”是页面地址,例如http://example.com/path/to/page.html 。相对链接,例如<a href="page2.html"> ,必须解释为基本 URI 的同级,因此 page.html被删除,并且 page2.html添加后,结果为 http://example.com/path/to/page2.html ,如预期。

Java URL类实现了这个逻辑,这就是为什么你得到你所看到的,这完全是它应该工作的方式。

这是设计使然,即不是错误。

关于java.net.URL 构造 URL 时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com