在 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。
我希望在我的应用程序中得到 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。