在&符号后,QueryParam会跳过所有内容

时间:2017-04-11 15:54:11

标签: java rest jax-rs urlencode

这是函数头

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/getxyz")
public Response getXyz(@QueryParam("input") String input ){

SomeClass abc = someService.getValue(input);

并且输入值也可以包含&符号。我面临的问题是,当我使用@QueryParam时,它会在&符号后跳过所有值。

例如:如果从浏览器端再次输入test&test,则仅将其解释为test

此外,我使用encodeURIComponent(input)在客户端对输入进行编码。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您应该在浏览器端对&符号进行编码,使用test%26test代替test&test。如果您按照说明使用encodeURIComponent,请在客户端进行该编码后显示您的查询参数。它应该是test%26test

答案 1 :(得分:2)

查询参数由& 符号分隔,这就是它在您的情况下在& 之后跳过第二次测试的原因。如果您同时需要test,请将其作为test and test发送到网址。

另请阅读What is the proper way to seperate query string parameters in a url?,了解如何发送查询参数。

答案 2 :(得分:2)

最终,我能够使用Spring MVC框架解决此问题,即使用@RequestParam来解析输入请求。它会准确地将test%20%26%20test解码为test & test

如果您的项目使用Spring MVC和Jersey,这种方法将非常有用。感谢大家提出的宝贵建议!