Как получить сообщение о неверном запросе в модификации 2

Статус возврата моей службы: 400 Неверный запрос с сообщением: Неверные учетные данные (неверный пароль)

Я вижу это в Почтальоне.

Проблема в том, что я не знаю, как получить сообщение «400 Bad Request Неверные учетные данные (неправильный пароль)» из моего кода Android.

Вот мой код:

call.enqueue(new Callback<JWToken>() {
    @Override
    public void onResponse(Call<JWToken> call, Response<JWToken> response) {
        String strMsg = response.message();  // I get message "Bad Request" without the string "Invalid credentials(wrong Password)"            
    }

Как я могу получить сообщение «Неверные учетные данные (неправильный пароль)», которое возвращает мой веб-API, и я могу увидеть его в Postman?

Большое спасибо!


person Vadim M    schedule 21.12.2016    source источник


Ответы (1)


Попробуйте поискать в errorBody() Response. Обратите внимание, что errorBody будет ненулевым, только если isSuccessful ложно.

call.enqueue(new Callback<JWToken>() {
    @Override
    public void onResponse(Call<JWToken> call, Response<JWToken> response) {
        if (!response.isSuccessful()) {
            String strMsg = response.message();
            try {
                String errorContent = response.errorBody().string();
            } catch (IOException e) {
                e.printStackTrace();
            }       
        }           
    }
person iagreen    schedule 22.12.2016
comment
привет, хорошоhttp3.ResponseBody$1@59c20fd - person Vadim M; 22.12.2016
comment
@VadimM убедитесь, что вы используете .string(), а НЕ toString() - person iagreen; 22.12.2016
comment
привет, спасибо за ваш ответ, я пытался, к сожалению, я получаю следующую строку: okhttp3.ResponseBody$1@59c20fd - person Vadim M; 22.12.2016
comment
Ошибка: (392, 86) ошибка: незарегистрированное исключение IOException; должен быть пойман или объявлен брошенным - person Vadim M; 22.12.2016
comment
Да, это должно быть в try и catch, как в моем ответе, потому что это проверенное исключение. - person iagreen; 22.12.2016
comment
try { String errorContent = response.errorBody().string(); } catch (IOException e) { e.printStackTrace(); } - person Vadim M; 22.12.2016