我使用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;
}
答案 0 :(得分:0)
您必须在gradle-file中检查您的依赖项。还要检查改装和转换器的版本是否相同。
答案 1 :(得分:0)
XML只能反序列化为具体类型,而不能反序列化为JSON之类的类型。在这种情况下,主体类型应代表<rss>
标签及其子元素,而不代表List<ZhuangbiImage>
。
官方改装团队Retrofit, XML and SimpleXmlConverterFactory problem的更多详细信息