UriBuilder错误地编码查询参数值?

时间:2010-05-11 20:30:32

标签: java encoding jax-rs query-parameters

让我们考虑以下代码示例,其中路径和单个参数被编码...

参数名称:“param”

参数值:“foo / bar?aaa = bbb& ccc = ddd”(碰巧是带有查询参数的网址)

   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"

这是对的吗?

字符“&”不应该(甚至可以“?”)在参数值字符串?

中编码

生成的URL不会被解释为:

第一个参数,name =“param”,value =“ar?aaa%3Dbbb”,后跟第二个参数,name =“ccc%3Dddd”,没有值。

1 个答案:

答案 0 :(得分:1)

您对“fromPath”的初始调用应该是“fromUri”。那说......

  

这是对的吗?

不,它看起来不像正确的输出。

  

字符“&”不应该(也许   甚至“?”)编码   参数值字符串?

是的,它应该是。

  

生成的网址不是   解释如下:

     

第一个参数,name =“param”,   value =“ar?aaa%3Dbbb”后跟a   第二个参数,name =“ccc%3Dddd”,   没有价值。

第一个参数是“foo / bar?aaa = bbb”,但是,是的,你正确地解释。这看起来像是javax.ws.rs.core提供程序中的错误。