在 Retrofit - Android 中使用 addConverterFactory 处理 Json 和 XML 响应

Shi*_*tty 2 parsing android retrofit2 jsonparser

我期待我的应用程序中同时有 json 和 xml 响应。Retrofit 2.0 允许您针对此类情况添加多个转换器工厂。

但似乎顺序在这里至关重要。在 SimpleXmlConverterFactory 之上添加 JacksonConverterFactory 使得 Retrofit 仅接受 Json 响应,并在遇到 XML 时抛出异常,反之亦然。

下面是如何向您的 Retrofit Builder 添加多个 addConverterFactory 的代码片段。

.addConverterFactory(JacksonConverterFactory.create(objectMapper))
                .addConverterFactory(SimpleXmlConverterFactory.create())
Run Code Online (Sandbox Code Playgroud)

<<<编辑

将上面的代码改成这样,还是不行:

return new Retrofit.Builder()
                .client(clientBuilder.build())
                .baseUrl(BuildConfig.API_ENDPOINT)
                .addCallAdapterFactory(unAuthorizedHandlingCallAdapterFactory)
                .addCallAdapterFactory(RxErrorHandlingCallAdapterFactory.create())
                .addConverterFactory(new QualifiedTypeConverterFactory(JacksonConverterFactory.create(objectMapper), SimpleXmlConverterFactory.create()))
                .build();
Run Code Online (Sandbox Code Playgroud)

编辑2

添加响应类型是关键 @GET("/") @Xml

Aka*_*dze 5

您可以将多个转换器工厂组合成一个Converter Factory,请从改造示例中查看此示例。