Мой API возвращает это, когда я использую неправильную информацию для входа (используя почтальона):
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "login failed",
"code": "LOGIN_FAILED",
"stack": "Error: login failed\n at ...path..."
}
}
Я использую этот метод, чтобы получить ответное сообщение:
private void handleResponse(retrofit2.Response<Response> response) {
if (response.isSuccessful()) {
emailField.setText(null);
passwordField.setText(null);
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
try {
showSnackBarMessage(response.errorBody().string());
} catch (Exception e) {
showSnackBarMessage(e.getMessage());
}
}
}
И вывод (что показывает снэк-бар) такой же, как и у почтальона.
handleresponse
параметр retrofit2.Response<Response> response
состоит из retrofit2 Response
и моего собственного <Response>
класса, который выглядит следующим образом:
public class Response {
@SerializedName("message")
@Expose
private String message;
public String getMessage() {
return message;
}
}
Как я могу получить только message
, чтобы показать в snackbar
?
Я пробовал следующий код, но получаю только No value for message
.
try {
JSONObject jObjError = new JSONObject(response.errorBody().string());
Toast.makeText(getContext(), jObjError.getString("message"), Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}