无法在Android Retrofit2 converter-simplexml库

时间:2016-06-16 10:40:20

标签: android retrofit simple-framework

我使用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;
}

2 个答案:

答案 0 :(得分:0)

您必须在gradle-file中检查您的依赖项。还要检查改装和转换器的版本是否相同。

答案 1 :(得分:0)

XML只能反序列化为具体类型,而不能反序列化为JSON之类的类型。在这种情况下,主体类型应代表<rss>标签及其子元素,而不代表List<ZhuangbiImage>

官方改装团队Retrofit, XML and SimpleXmlConverterFactory problem的更多详细信息