2014-09-29 13 views
6

पर मूल्य के बिना क्वेरी पैरामीटर को गतिशील रूप से जोड़ें, मैंने अनुरोध किया है कि उपयोगकर्ता के लिए चालू सेवाओं की सूची सेट करें।रेट्रोफिट अनुरोध

अनुरोध निम्न स्वरूप है:

https://myserver.com/setservices?param1=val1&param2=val2&service[10]&service[1000]&service[10000]

सेवा मानकों की सूची ("सेवा [10] & सेवा [1000] & सेवा [10000]") गतिशील रूप से बनाई गई है और प्रत्येक पैरामीटर नहीं है मूल्य। क्या रेट्रोफिट का उपयोग करके इसे हासिल करना संभव है?

उत्तर

15

retrofit documentation से:

जटिल क्वेरी पैरामीटर के लिए संयोजनों एक Map इस्तेमाल किया जा सकता।

@GET("/group/{id}/users") 
List<User> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options); 

मुझे लगता है कि यह आप क्या हासिल करना चाहते कर देगा।

+0

@QueryMap मूल्य बिना क्वेरी पैरामीटर शामिल करने के लिए अनुमति नहीं है। दस्तावेज़ीकरण से: "मान यूआरएल एन्कोड किए गए हैं और शून्य में यूआरएल में क्वेरी पैरामीटर शामिल नहीं होगा" –

+1

खाली तारों के बारे में क्या? – WojciechKo

+0

यह समानता प्रतीकों के साथ यूआरएल उत्पन्न करता है: https://myserver.com/setservices?service[100]=&service[10000]=&service[10]= लेकिन सर्वर इसे ठीक समझता है। –

5

मुझे यह पता चल गया कि यह कैसे करें।

@GET("/setservices{services_query}") 
ServicesSetResponse setServices(@EncodedPath("services_query") String servicesQuery); 

और फिर:

getService().setServices("?param1=val1&param2=val2" + "&services[10]&services[100000]&services[1000000]") 
संबंधित मुद्दे