【问题标题】:error handling with Volley when fatch data from server从服务器获取数据时使用 Volley 进行错误处理
【发布时间】:2019-05-15 06:05:32
【问题描述】:

我在我的项目中使用 Volley 来处理网络请求。这是我的服务器在有数据时返回的示例 JSON,否则会报错

{
    "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();
                        }

当数据没有值时,不显示任何项目消息,而是给出服务器错误

【问题讨论】:

  • JSON 在哪里?什么是错误?显示一些代码。
  • { "message_status": false, "message": "消息不可用!" }
  • 当数据没有价值时
  • 你为此做了什么?发布您的代码
  • 当数据没有价值时它给服务器错误我想显示消息不可用

标签: android api android-volley


【解决方案1】:

试试这个:

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) {
}

【讨论】:

  • 当我评论错误处理时出现服务器错误,然后在 toast 中显示所有对象和值
  • 如果有数据值,它运行一切正常
  • 你错过了添加你的 try and catch 块!
  • 使用您现在应用的新代码编辑您的问题
  • 您在代码中添加了new Response.ErrorListener() 吗?
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2014-03-19
  • 2018-02-21
  • 1970-01-01
相关资源
最近更新 更多