Ich verwende Retrofit 2.0.0-Beta1 mit SimpleXml. Ich möchte eine einfache (XML) Ressource von einem REST-Service abrufen. Das Marshalling / Unmarshalling des Simple-Objekts mit SimpleXML funktioniert einwandfrei.
Bei Verwendung dieses Codes (konvertierter Code vor 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"));
Bedienung:
public interface SimpleService {
@GET("/simple/{id}")
Simple getSimple(@Path("id") String id);
}
Ich bekomme diese Ausnahme:
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)
Was vermisse ich? Ich weiß, dass das Umschließen des Rückgabetyps mit einem Call
funktioniert. Ich möchte jedoch, dass der Dienst Geschäftsobjekte als Typ zurückgibt (und im Synchronisierungsmodus arbeitet).
AKTUALISIEREN
Nach dem Hinzufügen der zusätzlichen Abhängigkeiten und .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
wie durch verschiedene Antworten vorgeschlagen, wird immer noch der folgende Fehler angezeigt:
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
* retrofit.RxJavaCallAdapterFactory
* retrofit.DefaultCallAdapter$1