如何在Java中“合并”两个URI?
这是服务器的绝对URI:
URI base = new URI("http://localhost/root?a=1");
这是一个相对URI:
URI rel = new URI("/child?b=5");
现在我尝试将相对1应用于绝对,并接收:
URI combined = base + rel; // somehow
assert combined.equals(new URI("http://localhost/root/child?a=1&b=5"));
是否可以使用JDK或某些库进行这样的操作
# 1 楼答案
要将基本url的参数传递给合并的url,您必须通过调用url#getQuery手动提取这些参数,并将它们附加到新url
大概
需要一个if()来决定需要根据mergedUrl的外观加入它们
# 2 楼答案
URI(和文件)有一个接受现有URI(或文件)的构造函数
它是为相对URI制作的:
URL mergedURL = new URL(baseUrl, relativeUrl);
要合并两个文件路径,可以使用:
File mergedFile = new File(directoryFile, fileOrDir);
如果使用
mergedFile.getName()
,如果文件名不是目录,则会得到该文件名这对于URL是不可能的
# 3 楼答案
丑陋,但有效,至少在这种情况下:
要求第二个URL相对于第一个URL,其中第一个URL有一个查询字符串,这有点奇怪。第二个URL以“/”开头,这意味着它是相对于“/”的,而不是相对于“/根”。。。您确定生成的URL吗