Tuesday, 15 January 2013

Is it possible to manipulate retrofit url without method parameter? -


नेटवर्क कॉल इस तरह बनाये गये हैं

  @GET ("/ api / video / { स्लग} / शो ") शून्य प्राप्तविडियोडेटा (पैथ (" स्लग ") स्ट्रिंग स्लग, कॉलबैक & lt; VideoContainerGSON & gt; cb);  

अब मुझे "/ api" से पहले वरीय पथ को जोड़ने की आवश्यकता है:

  / en / api / video / {slug} / show  

या

  / sp / video / {slug} / शो  

यह पैरामीटर वैश्विक चौड़ा है, इसलिए परिवर्तन की स्थापना के बिना सभी नेटवर्क कॉल समान भाषा पथ का उपयोग करेगा। प्रश्न: विधि हस्ताक्षर के बिना इसे बदलने का एक तरीका है या मुझे

  @GET ("/ {lang} / एपीआई / वीडियो / {स्लग} / शो ") शून्य प्राप्तविडियोडेटा (@ पाथ (" लैंग ") स्ट्रिंग लैंग, पैथ (" स्लग ") स्ट्रिंग स्लग, कॉलबैक & lt; VideoContainerGSON & gt; cb);  

आप अपनी समस्या को हल करने के लिए स्ट्रिंग xmls का उपयोग कर सकते हैं। आप अपने api रूट को string.xml में रख सकते हैं और उदाहरण के लिए अन्य एक्सएमएल में इसे ओवरराइड कर सकते हैं:

  • values ​​/ string.xml

    <
  • & lt; स्ट्रिंग नाम = "api_root" & gt; http: //yourapiroot.com/en< / string & gt;

  • मान- es / string.xml

    & lt; स्ट्रिंग नाम = "एपीआई_रोक्ट" & gt; http: //yourapiroot.com/sp< / string & gt;

और जब आप अपने एडाप्टर सेट एपीआई रूट को संसाधनों से बनाते हैं जैसा कि नीचे दिए गए कोड में दिखाया गया है:

  new RestAdapter.Builder () .setEndpoint (Context.getString (R.string.api_root)) .build ()  

यदि आप डिवाइस की भाषा से बाकी एपीआई नहीं बनाना चाहते हैं तो आप पैरामीटर सेट कर सकते हैं जो एपीआई रूट में भाषा को परिभाषित करता है विधि में जहां आप RestAdapter

का निर्माण करते हैं और इसके बाद आप अपने कोड को / api /...// से लिखते हैं उदाहरण के लिए:

  @GET ("/ api / video / {slug} / शो") शून्य getVideoData (@ पथ ("स्लग") स्ट्रिंग स्लग, कॉलबैक & lt; VideoContainerGSON & gt; cb);  

No comments:

Post a Comment