Volley error выводит сообщение об ошибке со стороны сервера - PullRequest
2 голосов
/ 25 сентября 2019

Я использую залп с php и возвращаю ошибку со следующей структурой, как видно из почтальона

{
  "name": "Exception",
  "message": "Unable to verify your accont",
  "code": 500,
  "type": "yii\\base\\UserException"
}

Теперь я хотел бы прочитать сообщение об ошибке выше, поэтому в моем запросе строки залпа у меня есть

    StringRequest stringRequest = new StringRequest(this.request_method, this.api_url,
            response -> {

             },
            error -> {
            //here process the error
            if (error instanceof ServerError || error instanceof AuthFailureError){
             NetworkResponse response = er.networkResponse;
             switch (response.statusCode){
              case 500:{
               HashMap<String, String> result = new Gson().fromJson(....); //stuck

               }
             }
            }) {
        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }         
    };

Я застрял на том, как прочитать сообщение об ошибке из залповой ошибки.Как продолжить с или без gson

Я все еще хочу использовать строковый запрос, поскольку я ожидаю, что мой ответ от php будет строкой в ​​кодировке json.

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Используйте

String errorResponse = new String(error.networkResponse.data);

Затем преобразуйте эту строку в объект json

1 голос
/ 25 сентября 2019

Попробуйте этот способ прочитать Ответ от NetworkResponse

Для котлина

val response = er.networkResponse
val jsonError = String(response.data)
val responseObject = JSONObject(response)
val message = responseObject.optString("message")

для Java

NetworkResponse response = er.networkResponse;
String responseData = new String(response.data,"UTF-8");
JSONObject responseObject =new  JSONObject(response)
String message = responseObject.optString("message")
0 голосов
/ 25 сентября 2019

попытайтесь получить response.errorbody из вашего ответа API

...