将相对 URL 附加到 java.net.URL

2022-08-31 20:08:26

前提是我有一个java.net.URL对象,指向让我们说

http://example.com/myItemshttp://example.com/myItems/

是否有一些助手可以在某个地方附加一些相关的URL?例如追加或获取:./myItemIdmyItemIdhttp://example.com/myItems/myItemId


答案 1

这个不需要任何额外的库或代码,并给出所需的结果:

//import java.net.URL;
URL url1 = new URL("http://petstore.swagger.wordnik.com/api/api-docs?foo=1&bar=baz");
URL url2 = new URL(url1.getProtocol(), url1.getHost(), url1.getPort(), url1.getPath() + "/pet" + "?" + url1.getQuery(), null);
System.out.println(url1);
System.out.println(url2);

这打印:

http://petstore.swagger.wordnik.com/api/api-docs?foo=1&bar=baz
http://petstore.swagger.wordnik.com/api/api-docs/pet?foo=1&bar=baz

接受的答案仅在主机后面没有路径时才有效(恕我直言,接受的答案是错误的)


答案 2

URL 具有一个构造函数,该构造函数采用基本 URL字符串规范。

或者,更紧密地遵守标准,并具有执行相同操作的解决方法。从您的使用 URL.toURI 创建一个。java.net.URIURIURL