Android Json Arraylist到具有Restful Web服务的服务器

时间:2017-06-16 05:28:22

标签: android json

这是我从上一段片段中得到的Arraylist,

 listoftags = getArguments().getParcelableArrayList("data");

效果很好。现在我必须发送一些如下所示的参数:

public void volleyJsonObjectRequest(final String SessionID , final String CustomerID, final String ServiceState , final String ServiceID, final String Address, final String PaymentMode, final String CustomerComments , final ArrayList Items){

    String  REQUEST_TAG = "volleyJsonObjectRequest";

    // POST parameters

    CustomRequest request = new CustomRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // Toast.makeText(SignActivity.this, response.toString(), Toast.LENGTH_SHORT).show();

            Log.d("response",""+response.toString());

          /*  String status =  response.optString("StatusMessage");
            String actionstatus = response.optString("ActionStatus");
            Toast.makeText(getActivity(), ""+status, Toast.LENGTH_SHORT).show();
            if(actionstatus.equals("Success"))
            {
               // Intent i = new Intent(SignActivity.this, LoginActivity.class);
             //   startActivity(i);
              //  finish();
            }*/
            dismissProgress();

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getActivity(), "Error."+error.toString(), Toast.LENGTH_SHORT).show();
            Log.d("response",""+error.toString());
            dismissProgress();
        }
    }) {
    /*    @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded; charset=UTF-8";
        }*/

        public String getBodyContentType()
        {
            return "application/json; charset=utf-8";
        }
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            JSONArray jsArray = new JSONArray(listoftags);

            params.put("SessionID", SessionID);
            params.put("CustomerID", CustomerID);
            params.put("ServiceState", ServiceState);
            params.put("ServiceID", ServiceID);
            params.put("Address", Address);
            params.put("PaymentMode",PaymentMode);
            params.put("CustomerComments",CustomerComments);

            params.put("Items",jsArray.toString());

            return params;
        }

    };
    AppSingleton.getInstance(getActivity().getApplicationContext())
                        .addToRequestQueue(request, REQUEST_TAG);

}

但它给我带来错误我想发送它像 //服务器端//

{

    "SessionID":"9lm5255sg0ti9",
    "CustomerID":"9",
    "ServiceState":"Karnataka",
    "ServiceID":"3",
    "Address":"sfaff",
    "PaymentMode":"cash",
    "CustomerComments":"this is fine",
    "Items":[
        {
            "ItemId":1,
            "Cost":6777,
            "Quantity":33333
        }
    ]

}

如何使用其他字符串将arraylist作为原始数据发送到服务器上使用volley。

3 个答案:

答案 0 :(得分:0)

JsonObjectRequest可用于使用json作为输入执行rest api。

JsonObject jobj = new JsonObject();
jobj.put("key","value");
jobj.put("key","value");
jobj.put("key","value");
jobj.put("key","value");  



JsonObjectRequest request = new JsonObjectRequest(requestURL, jobj, new Response.Listener<JSONObject>()
{
    @Override
    public void onResponse(JSONObject response) {

    }
}, new Response.ErrorListener()
{
    @Override
    public void onErrorResponse(VolleyError error) {

    }
});

*Now add this request in request queue of volley.*

这里jobj包含输入参数。它甚至可以在JsonObject中包含json数组。如有任何疑问,请告诉我。

答案 1 :(得分:0)

而不是凌空尝试改造。制作你要发送的对象的pojo模型,你可以从https://www.jsonschema2pojo.org的pojo类中创建它,在restapi上发送整个对象

答案 2 :(得分:0)

//尝试请求//

尝试{

  • 请求队列

        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        String URL = url;
        JSONObject jsonBody = new JSONObject();
        JSONObject jsonObject = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        Iterator itr = listoftags.iterator();
        while(itr.hasNext()){
            AddRowItem ad=(AddRowItem)itr.next();
    
            jsonObject.put("ItemId:",1);
            jsonObject.put("Cost:",ad.getPrices());
            jsonObject.put("Quantity:",ad.getQty());
           // Log.d("ItemId:",""+1+" "+"Cost:"+ad.getPrices()+" "+"Quantity:"+ad.getQty());
        }
             jsonArray.put(jsonObject);
    
  • JSON VALUES PUT

            jsonBody.put("SessionID", "9kp0851kh6mk3");
            jsonBody.put("CustomerID", "9");
            jsonBody.put("ServiceState", "Karnataka");
            jsonBody.put("ServiceID", "3");
            jsonBody.put("Address", "Address Demo");
            jsonBody.put("PaymentMode", "cost");
            jsonBody.put("CustomerComments", "Android Volley Demo");
            jsonBody.put("Items", jsonArray);
    
    
        final String requestBody = jsonBody.toString();
        Log.d("string ---- >",""+requestBody);
    
    
        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("VOLLEY", response);
                showToast("get value"+response.toString());
              try {
    
                    JSONObject jObj = new JSONObject(response);
    
    
                    String action = jObj.get("ActionStatus").toString();
                    String status = jObj.getString("StatusMessage");
                 {"ActionStatus":"Success","StatusMessage":"Order Created","RefIDName":"OrderID","RefIDValue":19}
                    showToast("get value"+action);
    
                }
                catch (JSONException e)
                {
                    showToast("get error"+e.toString());
                    Log.d("errorissue",""+e.toString());
                }
    
    
                dismissProgress();
            }
        }, new Response.ErrorListener() {
    

//错误回复//

            public void onErrorResponse(VolleyError error) {
                Log.e("VOLLEY", error.toString());
                showToast("get error"+error.toString());
                dismissProgress();
            }
        }) {
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }

            @Override
            public byte[] getBody() throws AuthFailureError {
                try {
                    return requestBody == null ? null : requestBody.getBytes("utf-8");
                } catch (UnsupportedEncodingException uee) {
                    VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                    return null;
                }
            }

        };

        requestQueue.add(stringRequest);
    } catch (JSONException e) {
        e.printStackTrace();
        dismissProgress();
    }
}

}

//这是解决问题的方法// 感谢每个人......