Тело ответа имеет значение NULL, если код состояния не равен 200 при вызове модернизации весной. - PullRequest
0 голосов
/ 27 мая 2020

Я использую свой модифицированный клиент при вызове внешнего API. Я получаю код ответа, а также тело ответа, когда код состояния 200. Для кода состояния, отличного от 200 [ex 400] с объектом ошибки в ответе, он не получает и не отображает тело ответа, тогда как внешний API отправляет тело в случае отличного от 200. Тело ответа в этом случае равно null.

Вот мой конструктор

Retrofit.Builder builder =
    new Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(JacksonConverterFactory.create(objectMapper))
        .client(httpClient);

Retrofit retrofit = builder.build();

При вызове:

Call<ResponseDto> call =
    service.listSearch(listRequestDto);

try {
  Response<ResponseDto> response = call.execute();
}

Когда вызывается 200, ResponseDto принимается и отображается, но когда это не 200, это null.

1 Ответ

0 голосов
/ 27 мая 2020

Так как вы используете блоки try и catch. Вы можете получить ошибку в блоке catch, а затем решить, что вам нужно делать. В случае ошибки вы не получите ответа, он сразу go будет ловить блок.

Итак, ваш код будет выглядеть примерно так

try {
  Response<ResponseDto> response = call.execute();
 } catch (err) {
   // Do what you want to do in case of error.
}

Надеюсь, это поможет!

...