2010-05-11 31 views
3

讓我們考慮下面的代碼示例,其中一個路徑和單個參數被編碼...UriBuilder錯誤地編碼查詢參數值?

參數名:「參數」

參數值:「富/酒吧AAA BBB = CCC & = DDD」(恰好是具有查詢參數的URL)

String test = UriBuilder.fromPath("https://dummy.com"). 
       queryParam("param", "foo/bar?aaa=bbb&ccc=ddd"). 
       build().toURL().toString(); 

返回的編碼的URL字符串是:

"https://dummy.com?param=foo/bar?aaa%3Dbbb&ccc%3Dddd" 

爲T他的正確嗎?

不應該在參數值字符串中編碼字符「&」(甚至可能是「?」)嗎?

豈不產生的URL被解釋如下:

一個第一參數,名稱= 「參數」,值= 「?AR AAA%3Dbbb」 隨後是第二參數,名稱= 「CCC%3Dddd」 ,沒有價值。

+1

UriBuilder不屬於標準Java API AFAIK,這是它的包嗎? – leonbloy 2010-05-11 21:02:51

+0

它在JAX-RS(用於REST風格的Web服務的Java API) – Fred 2010-05-11 23:29:03

回答

1

您對「fromPath」的初始調用可能應該是「fromUri」。這就是說...

這是正確的嗎?

不,它看起來不正確的輸出。

不宜字符「&」(可能 甚至「?」)的 參數值字符串編碼?

是的,它應該是。

不會 產生的URL解釋爲如下:

一個第一參數,名稱= 「參數」, 值= 「芳AAA%3Dbbb?」 後面是 第二參數,名稱= 「ccc%3Dddd」, 沒有價值。

第一個參數是「foo/bar?aaa = bbb」,但是,您正在解釋正確。這看起來像javax.ws.rs.core提供程序中的錯誤。

+0

它實際上是一個澤西島bug(http://java.net/jira/browse/JERSEY-533?focusedCommentId=15079&page=com.atlassian.jira.plugin .system.issuetabpanels%3Acomment-tabpanel#action_15079) – fglez 2011-01-17 15:47:03

+0

哇,很高興知道。謝謝! – 2011-01-17 23:05:06