Tôi đang sử dụng trang bị thêm 2.0.0-beta1 với SimpleXml. Tôi muốn truy xuất tài nguyên Đơn giản (XML) từ dịch vụ REST. Marshalling / Unmarshalling đối tượng Simple với SimpleXML hoạt động tốt.
Khi sử dụng mã này (mã dạng chuyển đổi trước 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"));
Dịch vụ:
public interface SimpleService {
@GET("/simple/{id}")
Simple getSimple(@Path("id") String id);
}
Tôi nhận được ngoại lệ này:
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)
Tôi đang thiếu cái gì? Tôi biết rằng gói kiểu trả về bởi một Call
hoạt động. Nhưng tôi muốn dịch vụ trả về các đối tượng nghiệp vụ dưới dạng loại (và hoạt động ở chế độ đồng bộ).
CẬP NHẬT
Sau khi thêm các phần phụ thuộc bổ sung và .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
theo đề xuất của các câu trả lời khác nhau, tôi vẫn gặp lỗi này:
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
* retrofit.RxJavaCallAdapterFactory
* retrofit.DefaultCallAdapter$1