パス内の一連のパラメーターpathparametersを受け取るjax-rsサービスがあります。これらのパラメータは、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
て、スペースに使用して送信すると、パラメータをデコードできることを発見しました。