मैं एक GET सेवा के लिए एक जर्सी क्लाइंट बना रहा हूं जिसमें क्वेरी पैरामीटर के रूप में एक सूची है। प्रलेखन के अनुसार , एक क्वेरी पैरामीटर के रूप में एक सूची होना संभव है (यह जानकारी @QueryParam javadoc पर भी है ), इसे देखें:
सामान्य तौर पर विधि पैरामीटर का जावा प्रकार निम्न हो सकता है:
- एक आदिम प्रकार हो;
- एक कंस्ट्रक्टर है जो एकल स्ट्रिंग तर्क को स्वीकार करता है;
- एक स्थिर विधि है जिसका नाम valueOf या fromString है जो एक एकल स्ट्रिंग तर्क स्वीकार करता है (उदाहरण के लिए देखें, Integer.valueOf (स्ट्रिंग) और java.util.UUID.fromString (स्ट्रिंग)); या
- सूची, सेट या सॉर्टसेट हो, जहां टी ऊपर 2 या 3 को संतुष्ट करता है। परिणामी संग्रह केवल पढ़ने के लिए है।
कभी-कभी मापदंडों में एक ही नाम के लिए एक से अधिक मूल्य हो सकते हैं। यदि यह स्थिति है तो सभी मान प्राप्त करने के लिए 4) प्रकारों का उपयोग किया जा सकता है।
हालाँकि, मैं यह पता नहीं लगा सकता कि जर्सी क्लाइंट का उपयोग करके सूची क्वेरी पैरामीटर कैसे जोड़ा जाए।
मैं समझता हूं कि वैकल्पिक समाधान हैं:
- GET के बजाय POST का उपयोग करें;
- सूची को JSON स्ट्रिंग में परिवर्तित करें और इसे सेवा में पास करें।
पहला वाला अच्छा नहीं है, क्योंकि सेवा के लिए उचित HTTP क्रिया GET है। यह एक डेटा पुनर्प्राप्ति ऑपरेशन है।
यदि आप मेरी सहायता नहीं कर सकते तो दूसरा मेरा विकल्प होगा। :)
मैं सेवा भी विकसित कर रहा हूं, इसलिए मैं इसे आवश्यकतानुसार बदल सकता हूं।
धन्यवाद!
अपडेट करें
ग्राहक कोड (json का उपयोग करके)
Client client = Client.create();
WebResource webResource = client.resource(uri.toString());
SearchWrapper sw = new SearchWrapper(termo, pagina, ordenacao, hits, SEARCH_VIEW, navegadores);
MultivaluedMap<String, String> params = new MultivaluedMapImpl();
params.add("user", user.toUpperCase());
params.add("searchWrapperAsJSON", (new Gson()).toJson(sw));
ClientResponse clientResponse = webResource .path("/listar")
.queryParams(params)
.header(HttpHeaders.AUTHORIZATION, AuthenticationHelper.getBasicAuthHeader())
.get(ClientResponse.class);
SearchResultWrapper busca = clientResponse.getEntity(new GenericType<SearchResultWrapper>() {});