我正在使用球衣客户端向我的球衣服务器发送查询参数。这是查询:?sort=id+ASC
但在我检索此查询参数的代码中return uriInfo.getQueryParameters().getFirst("sort");
,此值的计算结果为id ASC
。为什么会发生这种情况,我该如何预防?
我正在使用球衣客户端向我的球衣服务器发送查询参数。这是查询:?sort=id+ASC
但在我检索此查询参数的代码中return uriInfo.getQueryParameters().getFirst("sort");
,此值的计算结果为id ASC
。为什么会发生这种情况,我该如何预防?
除了@IanRoberts 的建议之外,您还可以使用@Encoded
注释来获取参数的原始未解码值(默认情况下,Jersey 会解码这些值,这就是为什么id+ASC
会出现id ASC
在您的代码中)。
以下示例检索默认行为的解码值:
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") String sort) {
// sort is "id ASC"
return Response.ok().entity(sort).build();
}
要更改您只需添加的行为@Encoded
:
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") @Encoded String sort) {
// sort is "id+ASC"
return Response.ok().entity(sort).build();
}