How to send json array as post request in volley?

后端 未结 6 1443
孤城傲影
孤城傲影 2021-01-04 08:56

I am using volley for json parsing. I want to send some data using POST to server side. I am trying to send .Now can any one tell me that how can i send filter array to serv

6条回答
  •  南方客
    南方客 (楼主)
    2021-01-04 09:53

    Following three steps should make it work for old Volley libraries lacking this suport.

    1. Prepare payload and post:

                          JSONArray payloadItems = new JSONArray();
      
                    JSONObject payloadItem1=new JSONObject();
                   //set properties on item1
                   payloadItem1.put('prop1',"val11");
      
                    payloadItems.put(payloadItem1);
      
                   JSONObject payloadItem2=new JSONObject();
                   //set properties on item1
                   payloadItem2.put('prop1',"val12");
      
                   payloadItems.put(payloadItem1);
      
      
                   JsonArrayRequest request;
      
                   request = new JsonArrayRequest(Request.Method.POST,url,payloadItems, new Response.Listener() {
                      @SuppressWarnings("unchecked")
                      @Override
                      public void onResponse(JSONArray response) {
                          //your logic to handle response
                      }
                  }, new Response.ErrorListener() {
                      @Override
                      public void onErrorResponse(VolleyError error) {
                          //your logic to handle error
                      }
                  }) {
      
                      public Map getHeaders() throws AuthFailureError {
                          Map params = new HashMap();
                          /* This is very important to pass along */
                          params.put("Content-Type","application/json");
                          //other headers if any
                          return params;
                      }
      
                       };
      
      
      
      
                      request.setRetryPolicy(new DefaultRetryPolicy(10000, 2, 2));
                      VolleyHelper.init(this);
                      VolleyHelper.getRequestQueue().add(request);
      
    2. [If Needed] Add this constructor in Class- JsonArrayRequest in Volley package if not already there

        public JsonArrayRequest(int method, String url, JSONArray jsonArray, Listener listener, ErrorListener errorListener) {
          super(method, url, (jsonArray == null) ? null : jsonArray.toString(),
                  listener, errorListener);
      

      }

    3. [If Needed] Override this method if not yet implemented to support JSONArray response from server.

       @Override
       protected Response parseNetworkResponse(NetworkResponse response) {
           String responseString;
           JSONArray array = new JSONArray();
           if (response != null) {
      
               try {
                   responseString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
                   JSONObject obj = new JSONObject(responseString);
                   (array).put(obj);
               } catch (Exception ex) {
               }
           }
           //return array;
           return Response.success(array, HttpHeaderParser.parseCacheHeaders(response));
       }
      

提交回复
热议问题