मैं अल्पकालिक नेटवर्क कॉल के लिए स्क्वायर की रेट्रोफिट लाइब्रेरी का उपयोग कर रहा हूं। डेटा के कुछ टुकड़े हैं जिन्हें मैं प्रत्येक अनुरोध पर @Query
पैराम्स के रूप में शामिल करता हूं। इसलिए जैसा:क्या स्क्वायर रेट्रोफिट लाइब्रेरी के साथ किए गए प्रत्येक अनुरोध में आधार अनुरोध पैरामीटर सेट करने का कोई तरीका है?
@GET("/thingOne.php")
void thingOne(
@Query("app_version") String appVersion,
@Query("device_type") String deviceType,
Callback<Map<String,Object>> callback
);
@GET("/thingTwo.php")
void thingTwo(
@Query("app_version") String appVersion,
@Query("device_type") String deviceType,
Callback<Map<String,Object>> callback
);
यह हर एक Interface
में उल्लिखित endpoint के लिए appVersion
और deviceType
को परिभाषित करने के लिए बोझिल है। क्या पैरामीटर का आधार सेट सेट करने का कोई तरीका है जिसे प्रत्येक अनुरोध के साथ शामिल किया जाना चाहिए? कुछ समान है कि हम एक आम Authorization Header
कैसे सेट करते हैं?
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer("...")
.setRequestHeaders(new RequestHeaders() {
@Override
public List<Header> get() {
List<Header> headers = new ArrayList<Header>();
Header authHeader = new Header(
"Authorization", "Bearer " + token);
headers.add(authHeader);
}
return headers;
}
})
.build();
this.service = restAdapter.create(ClientInterface.class);
के लिए एक कस्टम RequestInterceptor जोड़कर है [इस] (http://developer.android.com/reference/org/apache /http/HttpRequestInterceptor.html) आप किस बारे में बात कर रहे हैं? मुझे RequestInterceptor नामक कक्षा के संदर्भ में प्रतीत नहीं होता है। या अनुरोध Facade करने के लिए। और RestAdapter में 'setRequestInterceptor' विधि नहीं है। क्या आप कुछ और विवरण प्रदान कर सकते हैं? –
आपके पास रेट्रोफिट का पुराना संस्करण होना चाहिए। यदि आप इसे संस्करण 1.1.1 में अपडेट करते हैं तो आपको उन्हें देखना चाहिए। http://square.github.io/retrofit/javadoc/retrofit/RequestInterceptor.html – Erich
@kdubb: मैं बॉडी के लिए यह कैसे कर सकता हूं? मेरे पास एक पोस्ट है जो एक जेसन पेलोड स्वीकार करता है। धन्यवाद! – dannyroa