我遇到了网址和相对路径(查询)的问题。我写了这段代码来从相对url获取绝对url:
old = "http://domain/script?param";
new_ = "?otherparam";
URL u = new URL(old);
u = new URL(u,new_);
这是输出:
JAVA URL: http://domain/script?param + ?otherparam = http://domain/?otherparam
FireFox: http://domain/script?param + ?otherparam = http://domain/script?otherparam
为什么网址的结果与FireFox不同?如何构建像FireFox一样的URL呢?
答案 0 :(得分:3)
Java中的BUG#6519518:URL incorrectly removes path leaf when the relative spec is query only (RFC1808)
说明中包含一种解决方法。
答案 1 :(得分:1)
阅读 URL(URL上下文,字符串规范)的javadoc可以为您的问题提供最佳答案:
如果规范的路径组件以斜杠字符“/”开头,则路径将被视为绝对路径,规范路径将替换上下文路径。
否则,路径将被视为相对路径,并附加到上下文路径,如RFC2396中所述。此外,在这种情况下,通过删除由“..”和“。”出现的目录更改来规范化路径。
由于您的网址背景网址没有斜线,因此会被删除。
尝试添加斜杠:old = "http://domain/script/?param";