обработка ошибок с Volley при получении данных с сервера - PullRequest
0 голосов
/ 15 мая 2019

Я использую Volley в своем проекте для обработки сетевых запросов.Вот пример JSON, который мой сервер возвращает, когда у него есть данные, затем fatch, иначе выдает ошибку

{
    "message_status": true,
    "data": [
        {
            "message_id": "88",
            "message_text": "hi,",
            "message_link": "0",
        },
}

{
    "message_status": false,
    "message": "Message not available!"
}

, это мой код

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_msg,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                   try {
                            JSONObject jsonObject = new JSONObject(response);

                            if (jsonObject.has("data") && !jsonObject.isNull("data")) {

                                String success = jsonObject.getString("message_status");
                                String message = jsonObject.getString("message");

                                JSONArray jsonArray = jsonObject.getJSONArray("data");

                                if (success.equals("true")) {
                                    for (int i = 0; i < jsonArray.length(); i++) {
                                        JSONObject object = jsonArray.getJSONObject(i);
                                        ChatMessage chatMessage = new ChatMessage();
                                        chatMessage.setMessageUser(object.getString("username"));
                                        chatMessage.setMessageTime(object.getString("time"));
                                        chatMessage.setMessageText(object.getString("message_text"));
                                        chatMessage.setUserId(object.getString("user_id"));
                                        chatMessage.setFileName(object.getString("file_name"));
                                        chatMessage.setMessageFile(object.getString("message_link"));
                                        chatMessage.setMessageID(object.getString("message_id"));
                                        chatMessages.add(chatMessage);
                                    }
                                    setupListview();
                                } else {
                                    // get message using error key
                                    String error = "Response : " + success + " = " + message;
                                    Toast.makeText(ChatActivity.this, error, Toast.LENGTH_SHORT).show();
                                }
                            }else {
                                Toast.makeText(ChatActivity.this, "data not available", Toast.LENGTH_SHORT).show();
                            }
                        } catch (Exception e) {
                            Toast.makeText(ChatActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                        }

, когда данные не имеют значения, тогда не показывают сообщения элемента, ноошибка сервера выдачи

1 Ответ

0 голосов
/ 15 мая 2019

Попробуйте это:

try {
    JSONObject jsonObject = new JSONObject(response);
    String success = jsonObject.getString("message_status");
    String message = jsonObject.getString("message");
    JSONArray jsonArray = jsonObject.getJSONArray("data");

    if (jsonArray != null || jsonArray.length() != 0) {
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject object = jsonArray.getJSONObject(i);
            ChatMessage chatMessage = new ChatMessage();
            chatMessage.setMessageUser(object.getString("username"));
            chatMessage.setMessageTime(object.getString("time"));
            chatMessage.setMessageText(object.getString("message_text"));
            chatMessage.setUserId(object.getString("user_id"));
            chatMessage.setFileName(object.getString("file_name"));
            chatMessage.setMessageFile(object.getString("message_link"));
            chatMessage.setMessageID(object.getString("message_id"));
            chatMessages.add(chatMessage);
            //loading.setVisibility(View.GONE);
        }
        setupListview();
    } else {
        // get message using error key
        Toast.makeText(ChatActivity.this, "error 1" + message + success, Toast.LENGTH_SHORT).show();
    }
} catch (Exception e) {
}
...