簡體   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