首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中“合并”两个URI?

如何在Java中“合并”两个URI?
EN

Stack Overflow用户
提问于 2011-11-26 02:29:42
回答 3查看 22.1K关注 0票数 22

这是服务器的绝对URI:

代码语言:javascript
复制
URI base = new URI("http://localhost/root?a=1");

这是一个相对URI:

代码语言:javascript
复制
URI rel = new URI("/child?b=5");

现在,我尝试将相对1应用于绝对对象,并接收:

代码语言:javascript
复制
URI combined = base + rel; // somehow
assert combined.equals(new URI("http://localhost/root/child?a=1&b=5"));

有没有可能用JDK或其他库来做这样的操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-26 02:38:17

代码语言:javascript
复制
URL mergedURL = new URL(new URL(baseUrl), relativeUrl);

要将基本URL的参数传递给合并的url,您必须通过调用URL#getQuery手动提取它们,并将它们附加到新的URL中

像这样,

代码语言:javascript
复制
String finalUrl = mergedUrl.toString() + "&" + baseUrl.getQuery();

这将需要一个if()来决定是否需要'&‘来连接它们,这取决于mergedUrl的外观。

票数 19
EN

Stack Overflow用户

发布于 2011-11-26 05:52:13

URI (和File)有一个接受现有URI (或File )的构造函数。

它是为相对URI创建的:

URL mergedURL = new URL(baseUrl, relativeUrl);

要合并两个文件路径,可以使用:

File mergedFile = new File(directoryFile, fileOrDir);

如果你使用mergedFile.getName(),如果它不是一个目录,你会得到文件名。

对于URL,这是不可能的。

票数 2
EN

Stack Overflow用户

发布于 2011-11-26 02:58:15

丑陋,但至少在这种情况下是有效的:

代码语言:javascript
复制
URI combined = new URI( "http://" + base.getHost() + base.getPath() + rel.getPath() + "?" + base.getQuery() + "&" + rel.getQuery() );

第二个URL相对于第一个URL的要求有点奇怪,因为第一个URL包含查询字符串。第二个网址以'/‘开头,这意味着它相对于"/",而不是“/root”……您确定生成的URL吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8273019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档