У меня есть Api, который возвращает два разных ответа.
В случае успеха ответ - -
{status="", message="", token="", subscription_active=""}
В случае ошибки - - 1006 *
{
"status": "failed",
"message": "",
"errors": []
}
Вот способ обработки данных -
Call<Object> call = jsonApi.hitOtp(otpPost);
call.enqueue(new Callback<Object>() {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
Log.d(TAG, "onResponse: "+response.body());
if(response.body() instanceof OtpSuccessResponse){
Toast.makeText(OtpActivity.this, otpSuccRes.getMessage(), Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(OtpActivity.this,"Failed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
Log.d(TAG, "onFailure: "+t.getMessage());
}
});
Я получаю ответ об успешном выполнении в журнале, но условие if не работает. Вместо этого я получаю -
java.lang.ClassCastException
com.google.gson.internal.LinkedTreeMap cannot be cast to
com.avaskm.yellowalleyproject.Retrofit.Otp.OtpSuccessResponse
Мой класс PoSuccess OnSuccess -
public class OtpSuccessResponse {
@SerializedName("status")
@Expose
private String status;
@SerializedName("message")
@Expose
private String message;
@SerializedName("token")
@Expose
private String token;
@SerializedName("subscription_active")
@Expose
private String subscriptionActive;
public OtpSuccessResponse(String status, String message, String token, String subscriptionActive) {
this.status = status;
this.message = message;
this.token = token;
this.subscriptionActive = subscriptionActive;
}
}