【发布时间】:2015-11-22 23:57:14
【问题描述】:
我正在使用带有 SimpleXml 的改造 2.0.0-beta1。我想要从 REST 服务中检索简单 (XML) 资源。 使用 SimpleXML 编组/解组 Simple 对象可以正常工作。
使用此代码时(转换为 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
【问题讨论】:
-
使用协程的朋友请查看@chatlanin 回答
标签: java rest retrofit simple-framework