【问题标题】:Null pointer Exception when using volley使用 volley 时出现空指针异常
【发布时间】:2018-06-20 10:11:25
【问题描述】:

我正在使用 volley 从数据库中获取数据。我总是收到空指针错误。我不知道错误是什么。它总是执行 onErrorResponse() (error.null) 并在我的 logcat 中显示这个

BasicNetwork.performRequest:意外响应代码 301

这是我从 php 文件中获取数据的 java 方法。

 private void fetchChatThread() {

    StringRequest strReq = new StringRequest(Request.Method.POST,
            EndPoints.chatMessages, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            try {
                JSONObject obj = new JSONObject(response);

                Load_datato_list load_data_tolist = new Load_datato_list();
                load_data_tolist.execute(obj);

            } catch (JSONException e) {
                Log.e(TAG, "json parsing error: " + e.getMessage());
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Messages messages=new Messages();
            error.printStackTrace();
            NetworkResponse networkResponse = error.networkResponse;
            Log.e(TAG, " Try Again  fetch error" + networkResponse);
            Toast.makeText(Chat_Rooms.this, messages.getSender_id(), Toast.LENGTH_SHORT).show();

        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> myparams = new HashMap<String, String>();

            try {
          myparams.put("sender_userid", sender_userid);
         myparams.put("reciver_id", String_username.reciver_user_id);
            } catch (Exception e) {

                e.printStackTrace();
            }
            Log.e(TAG, "Params: " + myparams.toString());
            return myparams;
        }
    };
    //Adding request to request queue
    addToRequestQueue(strReq);
}

这是我的私人将数据从php加载到对象

 private class Load_datato_list extends AsyncTask<JSONObject, Void, ArrayList<Messages>> {


    @Override
    protected ArrayList<Messages> doInBackground(JSONObject[] params) {

        JSONObject obj = params[0];
        try {
            JSONArray commentsObj = obj.getJSONArray("messages");

            for (int i = 0; i < commentsObj.length(); i++) {
                JSONObject commentObj = (JSONObject) commentsObj.get(i);

                String commentId = commentObj.getString("id");
                String commentText = commentObj.getString("message");
                String createddate = commentObj.getString("date");
                String commentuser_id = commentObj.getString("user_id_fk");
                URL url;
                Bitmap image, image1;
                try {
                    url = new URL(Base_URL.BASE_URL_IMAGES + "user_profile_pictures" + commentuser_id + ".jpg");
                    image1 = BitmapFactory.decodeStream(url.openStream());
                    image = getResizedBitmap(image1, 50);
                } catch (Exception e) {
                    image = null;


                    e.printStackTrace();
                }

                Users user;

                user = new Users(commentuser_id, String_username.user_name, image);

                Messages message = new Messages();
                message.setId(commentId);
                message.setMessage(commentText);
                message.setCreatedAt(createddate);
                message.setSender_id(commentuser_id);
                message.setUser(user);
                messageArrayList.add(message);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return messageArrayList;
    }

    @Override
    protected void onPostExecute(ArrayList<Messages> messageArrayList) {
        Collections.reverse(messageArrayList);

        chatroom_adapter.notifyDataSetChanged();
        if (chatroom_adapter.getItemCount() > 1) {
            rec_chatBubble.getLayoutManager().smoothScrollToPosition(rec_chatBubble, null, chatroom_adapter.getItemCount() - 1);
        }
    }
}

【问题讨论】:

    标签: nullpointerexception android-volley


    【解决方案1】:

    试试这个

    private void fetchChatThread(final String count) {
    
        StringRequest strReq = new StringRequest(Request.Method.POST,
                EndPoints.chatMessages, new Response.Listener<String>() {
    
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject obj = new JSONObject(response);
                    Log.d("response error", response);
    
                    Load_datato_list load_data_tolist = new Load_datato_list();
                    load_data_tolist.execute(obj);
    
    
    
                } catch (JSONException e) {
                    Log.e(TAG, "json parsing error: " + e.getMessage());
                }
            }
        }, new Response.ErrorListener() {
    
            @Override
            public void onErrorResponse(VolleyError error) {
                Messages messages = new Messages();
                error.printStackTrace();
                NetworkResponse networkResponse = error.networkResponse;
                Log.e(TAG, " Try Again  fetch error" + networkResponse);
    
            }
        }) {
    
            @Override
            protected HashMap<String, String> getParams() {
                HashMap<String, String> myparams = new HashMap<String, String>();
    
                try {
                    myparams.put("sender_userid", sender_userid);
                    myparams.put("reciver_id", String_username.reciver_user_id);
                    myparams.put("count", count);
                } catch (Exception e) {
    
                    e.printStackTrace();
                }
                Log.e(TAG, "Params: " + myparams.toString());
                return myparams;
            }
        };
        //Adding request to request queueok
    
        addToRequestQueue(strReq);
    }
    

    还有这个

    private class Load_datato_list extends AsyncTask<JSONObject, Void, ArrayList<Messages>> {
    
    
        @Override
        protected ArrayList<Messages> doInBackground(JSONObject[] params) {
            messageArrayList.clear();
            JSONObject obj = params[0];
            try {
                JSONArray commentsObj = obj.getJSONArray("messages");
    
                for (int i = 0; i < commentsObj.length(); i++) {
                    JSONObject commentObj = (JSONObject) commentsObj.get(i);
    
                    String Id = commentObj.getString("id");
                    String Text = commentObj.getString("message");
                    String date = commentObj.getString("date");
                    String yuser_id = commentObj.getString("user_id");
    
    
                    Messages message = new Messages();
                    message.setId(Id);
                    message.setMessage(Text);
                    message.setCreatedAt(date);
                    message.setSender_id(yuser_id);
    
                    messageArrayList.add(message);
    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return messageArrayList;
        }
    

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 2020-03-21
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多