Android Volley error.getMessage() пуст
Итак, я делаю POST JSonObjectRequest на моем сервере, и когда он завершен, все работает, и информация отправляется, но если есть ошибка, и я пытаюсь отобразить ее в тосте, она отображается как пустая. Вот мой запрос:
private void logUserIn() {
final String URL = Globals.BASE_URL +"/auth/login/";
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", username.getText().toString());
params.put("password", password.getText().toString());
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Log.d("Log In User", response.toString());
//logged in db, changes screens
Intent nextScreen = new Intent(getApplicationContext(), MyProfile.class);
startActivity(nextScreen);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
VolleyLog.e("Error: ", error.getMessage());
}
});
// add the request object to the queue to be executed
Globals.mRequestQueue.add(req);
}
error.getMessage() всегда пуст. Вот мой ответ (проверенный с использованием CURL), когда сервер возвращает ошибку:
{ "non_field_errors": [ Msgstr "Невозможно войти в систему с предоставленными учетными данными." ]
}
Я не могу напечатать это сообщение. Что мне не хватает? POST работает, но ответ об ошибке показывает пустое...
Ответы
Ответ 1
Объект VolleyError имеет ссылку networkResponse, попробуйте проверить его, чтобы узнать, есть ли у вас какая-то полезная информация.
@Override
public void onErrorResponse(VolleyError error) {
if (error == null || error.networkResponse == null) {
return;
}
String body;
//get status code here
final String statusCode = String.valueOf(error.networkResponse.statusCode);
//get response body and parse with appropriate encoding
try {
body = new String(error.networkResponse.data,"UTF-8");
} catch (UnsupportedEncodingException e) {
// exception
}
//do stuff with the body...
}