Sto usando il retrofit 2.0.0-beta1 con SimpleXml. Desidero recuperare una risorsa semplice (XML) da un servizio REST. Marshalling / Unmarshalling dell'oggetto Simple con SimpleXML funziona bene.
Quando si utilizza questo codice (modulo convertito prima del codice 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"));
Servizio:
public interface SimpleService {
@GET("/simple/{id}")
Simple getSimple(@Path("id") String id);
}
Ottengo questa eccezione:
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)
Cosa mi manca? So che il wrapping del tipo restituito da un Call
funziona. Ma voglio che il servizio restituisca gli oggetti business come tipo (e funzioni in modalità di sincronizzazione).
AGGIORNARE
Dopo aver aggiunto le dipendenze extra e .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
come suggerito da diverse risposte, ricevo ancora questo errore:
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
* retrofit.RxJavaCallAdapterFactory
* retrofit.DefaultCallAdapter$1