如果响应既可以是 JSon/HTML,如何通过 Retrofit 2 解析响应?



嗨,我正在使用一个 API,当会话令牌无效时返回登录页面/如果会话有效,则返回 JSON 响应。我如何使用改造来实现这一点,即具有多种响应类型?

附言这是一个旧的API,无法更改。我是改造的新手,非常感谢您的帮助。

会将其作为评论发布,因为它更像是一个建议而不是实际答案,但它在这里:

(如果您是改造的新手,请发表评论以更详细地解释它(

您可以使您的呼叫返回如下响应:

@GET("login/endpoint")
Call<Response> getLogin();

比你可以像这样打电话

Call<Response> getLogin = ApiService.getLogin();
getLogin.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Response> call, Response<Response> response) {
//here you can access Response.body() and use it to determine wether it's json or html and react accordingly
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
//todo: error message
}
});

注意:我使用的响应来自 OkHttp 库。

如果这不起作用,您可以尝试制作自己的转换器,该转换器检查了 html/json,并将其添加到创建改造实例时。 我不完全确定您如何做到这一点,但这似乎有一个大致的想法:来自 FutureStudio 的自定义转换器。

如果您需要更多指导/澄清,请告诉我,我将在今天晚些时候回答。