繁体   English   中英

java.net.URL和相对URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM