我有一个 jax-rs 服务,它在路径中接收一组参数,pathparameters。这些参数可能是包含不适合 url 的值的字符串,因此它们在客户端使用 java.net.UrlEncoder 进行 urlencoded,如下所示:
String param = URLEncoder.encode(o.toString(), "UTF-8");
这用于构建 url supplier/group/param1/param2/param3
。如果其中一个由于 urlencoding 而改变,例如如果它只是一个空格,则在服务上接收到的字符串是一个+
符号。
@GET
@Path("{supplierId}/{groupCode}/{groupId}")
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public SupplierGroup getSupplierGroup(@PathParam("supplierId") BigDecimal supplierId,
@PathParam("groupCode") String groupCode,
@PathParam("groupId") BigDecimal groupId) {
//now groupCode is "+", not " "
}
我希望 jaxrs 能够自动解码编码的路径参数。
编辑:测试更多我发现当发送使用%20
空间时,它能够解码参数。