我使用 Retrofit2 converter-simplexml 库,当我使用 converter-gson 时代码运行成功,但是当我添加 simplexmlConverter 时,我得到一个异常:
java.lang.IllegalArgumentException: Unable to create converter for java.util.List<com.rengwuxian.rxjavasamples.model.ZhuangbiImage>
Caused by: java.lang.IllegalArgumentException: Could not locate ResponseBody converter for java.util.List<com.rengwuxian.rxjavasamples.model.ZhuangbiImage>.
这是我尝试执行复古 http 请求的地方:
private void search(String key) {
subscription = getZhuangbiApi()
.search(key)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public static ZhuangbiApi getZhuangbiApi() {
if (zhuangbiApi == null) {
Retrofit retrofit = new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(baseUrl)
.addConverterFactory(simpleXmlConverterFactory)
.addCallAdapterFactory(rxJavaCallAdapterFactory)
.build();
zhuangbiApi = retrofit.create(ZhuangbiApi.class);
}
return zhuangbiApi;
}
我的界面变成了我的 API
public interface ZhuangbiApi {
@GET("merchant/list")
Observable<List<ZhuangbiImage>> search(@Query("app_code") String appCode);
}
和 ZhuangbiImage 类
@Root(name = "item")
public class ZhuangbiImage {
@Element(name = "title")
public String title;
@Element(name = "merchant_id")
public String merchantId;
}
最佳答案
XML 只能反序列化为具体类型,不能像 JSON 那样反序列化为类型列表。在这种情况下,主体类型应表示 <rss>标记及其子项而不是 List<ZhuangbiImage> .
来自官方 retrofit 团队的更多详细信息Retrofit, XML and SimpleXmlConverterFactory problem
关于android - 无法在 Android Retrofit2 converter-simplexml 库中为我的类创建转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37856824/