Версия дооснащения: 2.1.0
Ok Версия http: 3.4.1
В onResponse
методе моей реализации Callback
я имеют следующую логику:
@Override
public void onResponse(Call<BaseResponseBody<T>> call, Response<BaseResponseBody<T>> response) {
if (response != null && response.isSuccessful() && response.body() != null && response.body().containsValidSuccess()) {
// Perform actions using response.body().getValue().
} else {
// If containsValidSuccess returns false, show a dialog that includes the raw JSON response body.
}
}
Здесь BaseResponseBody
- мой собственный тип (не связанный с _5 _ a в OkHttp >), который является оболочкой для универсального типа T extends Validatable
, где Validatable
- это интерфейс, который предоставляет isValid
метод, используемый для подтверждения того, что десериализованные ответы удовлетворяют заданным ограничениям.
Если я получаю якобы успешный ответ (HTTP-код 2XX, ненулевое тело ответа и т. Д.), Но десериализованное тело которого не проходит этот этап проверки (т.е. containsValidSuccess
возвращает false), я хотел бы представить диалоговое окно, сообщение которого включает тело ответа необработанного (до десериализации). Однако я, похоже, не могу получить доступ к этому необработанному телу ответа через Retrofit _ 10_ типа.
Я читал другие страницы, которые, кажется, предлагают Interceptor
может лучше удовлетворить мои потребности. Я знаком с перехватчиками и использую их для других манипуляций с вызовами в моем приложении, но я не понимаю, как точно передать информацию от моего перехватчика к последнему методу Callback.onResponse
, чтобы представить диалог.
Я на правильном пути? Я упускаю что-то очевидное в API-интерфейсах Retrofit? Как я могу достичь поставленной цели? Спасибо!
response.raw().body().string()
в своемCallback
, я вижу следующее исключение:java.lang.IllegalStateException: Cannot read raw response body of a converted body.
. С другой стороны, вызовresponse.body()
в моемCallback
возвращает объект RetrofitResponse
, у которого нет методаstring
. - person stkent   schedule 27.10.2016CallAdapter.Factory
- person Raghunandan   schedule 27.10.2016BaseResponseBody
- person Raghunandan   schedule 27.10.2016