[英]java.net.URL and relative 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
为什么URL的结果与FireFox不同? 如何像FireFox一样构建URL?
它是Java中的BUG#6519518: 当相对规范仅用于查询时,URL错误地删除了路径叶(RFC1808)
该描述包含解决方法。
读取URL的 javadoc (URL上下文,字符串规范)可为您的问题提供最佳答案:
如果规范的路径组件以斜杠字符“ /”开头,则该路径将被视为绝对路径,并且规范路径将替换上下文路径。
否则,如RFC2396中所述,该路径将被视为相对路径并附加到上下文路径。 同样,在这种情况下,通过删除由于出现“ ..”和“。”而进行的目录更改来规范化路径。
由于您的网址上下文网址以无斜杠结尾,因此将其删除。
尝试添加斜杠: old = "http://domain/script/?param";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.