Yolda, yol parametrelerinde bir dizi parametre alan bir jax-rs hizmetim var. Bu parametreler URL'ler için değil uygun değerleri içeren dizeleri olabilir, bu yüzden şöyle java.net.UrlEncoder kullanarak istemci tarafında urlencoded edilir: Bu url supplier/group/param1/param2/param3
oluşturmak için kullanılanJax-rs otomatik kod çözme yolu parametresi
String param = URLEncoder.encode(o.toString(), "UTF-8");
. Bunlardan biri urlencoding nedeniyle değiştirilirse, örneğin sadece bir boşluk ise, serviste alınan dize bir +
işaretidir.
@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'ın kodlanmış yol parametrelerini otomatik olarak çözmesini beklerim.
DÜZENLEME
: Test biraz daha ben alan%20
kullanarak gönderirken, diğer parametrelerin de çözmesi mümkün olduğunu keşfetti.
PathParam javadoc gelen
'URI.toAciisString'i kullanmak her zaman çalışmaz. @ Yegor256'nın cevabı daha sağlamdır - – SomethingSomething