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

Handling both Json and XML response in Retrofit - Android using addConverterFactory

我希望在我的应用程序中得到 json 和 xml 的响应。 Retrofit 2.0 允许您为这种情况添加多个转换器工厂。

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

下面是一个代码片段,说明如何将多个 addConverterFactory 添加到您的 Retrofit Builder。

.addConverterFactory(JacksonConverterFactory.create(objectMapper))
                .addConverterFactory(SimpleXmlConverterFactory.create())

<<< 编辑

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

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();

edit2

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

您可以将多个 Converter Factory 组合成一个 Converter Factory,检查改造示例中的 this example