Я делаю запрос к конечной точке API, который при сбое предоставит информацию в части сообщения ответа, как показано здесь:
{
"data":[],
"messages":{
"payment_required":{
"amount":"265.00"
}
},
"code":"",
"status":"failed",
"status_code":400
}
В приложении для Android я передаю JsonObjectRequest
как показано здесь:
JsonObjectRequest jsonObjRequest = new JsonObjectRequest(Request.Method.PUT, url, data,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
changeColourInterface.requestSuccess();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null && networkResponse.data != null) {
String jsonError = new String(networkResponse.data);
Log.v("ChangeColour", jsonError);
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
ChangeModelVersionResponse changeModelVersionResponse = gson.fromJson(jsonError, ChangeModelVersionResponse.class);
realm.beginTransaction();
realm.copyToRealm(changeModelVersionResponse.data);
realm.commitTransaction();
changeColourInterface.requestFailed(changeModelVersionResponse.data);
}
}
});
queue.add(jsonObjRequest);
Я попадаю в раздел onErrorResponse
, но когда я пытаюсь создать строку базы данных локальной области в таблице ChangeModelVersion, я получаю сообщение об ошибке.Это связано с тем, что ответ GSON
ищет раздел «данные».Но мне нужно, чтобы он искал раздел сообщений.
Как мне этого добиться?