मेरे पास एक जैक्स-आरएस सेवा है जो पथ, पथदर्शी में पैरामीटर का एक सेट प्राप्त करती है। ये पैरामीटर यूआरएल के लिए उपयुक्त नहीं मान वाली स्ट्रिंग को हो सकता है, इसलिए वे तो जैसे java.net.UrlEncoder का उपयोग कर ग्राहक के पक्ष urlencoded रहे हैं:जैक्स-आरएस स्वचालित डीकोड पथपरम
String param = URLEncoder.encode(o.toString(), "UTF-8");
इस यूआरएल 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
का उपयोग करते समय, यह परम को डीकोड करने में सक्षम है।
'URI.toAsciiString' का उपयोग करना हमेशा काम नहीं करता है। @ Yegor256 का उत्तर अधिक मजबूत है - फ़ंक्शन डिक्रेशन – SomethingSomething