用java.net.URL在java中构造错误的url



使用oracle java 1.8.0_25

我有以下结构

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123"), "asd")

根据https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html
的文档它应该生成http://localhost:4567/123/asd
的URL。但它产生了http://localhost:4567/asd

文档说明

此代码片段使用URL构造函数,该构造函数允许您从另一个URL对象(基)和相对URL规范创建URL对象。这个构造函数的一般形式是:

URL(URL baseURL, String relativeURL)
第一个参数是一个URL对象,它指定新URL的基。第二个参数是一个String,它指定资源名相对于基名的其余部分。如果baseURL为空,则此构造函数将相对URL视为绝对URL规范。相反,如果relativeURL是绝对URL规范,则构造函数忽略baseURL。

这是正确的行为吗?

使用这个构造函数阅读文档后:

URL(URL baseURL, String relativeURL)

你可以这样做:

URL baseUrl = new URL("http://localhost:4567/");
URL url = new URL(baseUrl, "123/asd")

或者您可以使用一行代码:

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123/"), "asd");

输出

http://localhost: 4567/123/asd

相关内容

  • 没有找到相关文章

最新更新