使用volley将Json Array的POST请求作为数据发送到服务器

时间:2015-07-25 05:54:03

标签: android json android-volley

我想使用排球发送一个帖子请求。我有这种格式的数据。

  [{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"10:29:17","id":1},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"15:59:41","id":2},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:05:53","id":3},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:06:16","id":4},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:06:51","id":5},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:08:36","id":6},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:13:33","id":7},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"16:22:32","id":8},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"17:00:46","id":9},{"date":"24 Jul 2015","doctorEmail":"mohd.aquib09@gmail.com","doctorName":"aquib","time":"17:04:04","id":10}]

我正在以这种格式得到答复

{"Message" : "Success"}

我已编写此代码以发送请求。

   public void saveDataToServer(String data){

        final String BASE_URL = "http://spirantcommunication.com/andriod/grl/doctor_visit_track1.php";
        final String DOCTOR_JSON_PARAM = "doctorJson";

        HashMap<String, String> params = new HashMap<>();
        params.put(DOCTOR_JSON_PARAM, data);

        JsonObjectRequest request = new JsonObjectRequest(BASE_URL, new JSONObject(params),

                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try{
                            VolleyLog.v("Response:%n %s", response.toString(4));
                        }catch (JSONException e){
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        MySingleton.getInstance(this).addToRequestQueue(request);
    }

但是我无法发送它。请有人帮助我。

1 个答案:

答案 0 :(得分:1)

为了使用凌空发送一些帖子参数,您必须覆盖getParams()方法,该方法应返回以键值格式发送的参数列表。

请按照以下代码段向服务器发送适当的帖子参数。

// Tag used to cancel the request
String tag_json_obj = "json_obj_req";

                  JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
                url, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                                                }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                                               }
                }) {

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put(DOCTOR_JSON_PARAM, data);                 

                return params;
            }

        };

// Adding request to request queue
 MySingleton.getInstance(this).addToRequestQueue(jsonObjReq, tag_json_obj);