【问题标题】:Unable to create converter for my class in Android Retrofit2 converter-simplexml library无法在 Android Retrofit2 转换器-simplexml 库中为我的班级创建转换器
【发布时间】:2016-06-16 10:40:19
【问题描述】:

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

【问题讨论】:

  • 你说“使用 gson 时代码运行良好”是什么意思?使用 gson 转换器时是否成功响应,而使用简单 xml 转换器时响应不成功?
  • 重新检查您的依赖关系。你添加了这一行 `dependencies { // Retrofit XML converter (Simple) compile 'com.squareup.retrofit2:converter-simplexml:2.1.0' }'
  • 你能分享你的 gradle 文件吗?以及您从 Web 服务获得的示例响应
  • 你是在用 call> 而不是 Observable> 进行测试
  • 在你的 Api 中试试这个 .addConverterFactory(SimpleXmlConverterFactory.create())

标签: android retrofit simple-framework


【解决方案1】:

XML 只能反序列化为具体类型,而不是 JSON 等类型列表。在这种情况下,主体类型应代表&lt;rss&gt; 标记及其子标记,而不是List&lt;ZhuangbiImage&gt;

来自官方改装团队的更多细节Retrofit, XML and SimpleXmlConverterFactory problem

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 改造的版本不需要和转换器的版本相匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2017-01-07
    • 2015-01-30
    • 2016-12-20
    • 2017-01-12
    相关资源
    最近更新 更多