Saya menggunakan retrofit 2.0.0-beta1 dengan SimpleXml. Saya ingin mengambil sumber daya Simple (XML) dari layanan REST. Marshalling / Unmarshalling objek Simple dengan SimpleXML berfungsi dengan baik.
Saat menggunakan kode ini (bentuk yang diubah sebelum kode 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"));
Layanan:
public interface SimpleService {
@GET("/simple/{id}")
Simple getSimple(@Path("id") String id);
}
Saya mendapatkan pengecualian ini:
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)
Apa yang saya lewatkan? Saya tahu bahwa membungkus tipe pengembalian dengan sebuah Call
karya. Tapi saya ingin layanan mengembalikan objek bisnis sebagai tipe (dan bekerja dalam mode sinkronisasi).
MEMPERBARUI
Setelah menambahkan ketergantungan tambahan dan .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
seperti yang disarankan oleh jawaban yang berbeda, saya masih mendapatkan kesalahan ini:
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
* retrofit.RxJavaCallAdapterFactory
* retrofit.DefaultCallAdapter$1