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