मैं SimpleXml के साथ रेट्रोफिट 2.0.0-बीटा 1 का उपयोग कर रहा हूं। मैं REST सेवा से एक सरल (XML) संसाधन प्राप्त करना चाहता हूं। सिंपल ऑब्जेक्ट को सिंपल एक्सएमएल के साथ मार्शल / अनमरशलिंग करना ठीक काम करता है।
इस कोड का उपयोग करते समय (2.0.0 कोड पूर्व परिवर्तित रूप):
final Retrofit rest = new Retrofit.Builder()
.addConverterFactory(SimpleXmlConverterFactory.create())
.baseUrl(endpoint)
.build();
SimpleService service = rest.create(SimpleService.class);
LOG.info(service.getSimple("572642"));
सेवा:
public interface SimpleService {
@GET("/simple/{id}")
Simple getSimple(@Path("id") String id);
}
मुझे यह अपवाद मिलता है:
Exception in thread "main" java.lang.IllegalArgumentException: Unable to create call adapter for class example.Simple
for method SimpleService.getSimple
at retrofit.Utils.methodError(Utils.java:201)
at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:51)
at retrofit.MethodHandler.create(MethodHandler.java:30)
at retrofit.Retrofit.loadMethodHandler(Retrofit.java:138)
at retrofit.Retrofit$1.invoke(Retrofit.java:127)
at com.sun.proxy.$Proxy0.getSimple(Unknown Source)
मैं क्या खो रहा हूँ? मुझे पता है कि एक Call
कार्य द्वारा रिटर्न प्रकार को लपेटना । लेकिन मैं चाहता हूं कि सेवा व्यावसायिक वस्तुओं को टाइप के रूप में लौटाए (और सिंक मोड में काम कर रही है)।
अपडेट करें
अतिरिक्त आश्रितों को जोड़ने और .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
विभिन्न उत्तरों द्वारा सुझाए गए अनुसार, मुझे अभी भी यह त्रुटि मिलती है:
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
* retrofit.RxJavaCallAdapterFactory
* retrofit.DefaultCallAdapter$1