简体   繁体   中英

How I send a JsonObject and recive a JsonArray

While I was testing the "volley" library, a doubt arose me regarding the method "post".

The thing is that I have been working with JsonObject until now, for that I used the following code and it works. In this method I send and JsonObject and receive another JsonObjet, I had no problem with it.

Now my doubt is, How can I do to send a JsonObject and receive an ArrayObject?

I am really lost with this, I will really appreciate your help, thanks in advance

public void testPost(String url, final String tag, JSONObject obj) {
    //final ProgressDialog pDialog = new ProgressDialog(context);
    //pDialog.setMessage("Loading...");
    //pDialog.show();
    JsonObjectRequest jsonObjReqpost = new JsonObjectRequest(Request.Method.POST,
            url, obj,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    //test
                    Log.d("SendRequestJsonPost", response.toString());
                    //pDialog.hide();
                }

            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            if (error.networkResponse != null && error.networkResponse.data != null) {
                error = new VolleyError(new String(error.networkResponse.data));
            }
            String fail = handlingErrors.resolverErrors(error.toString());
            //Log.d("SendRequestJsonPost", fail);
            //pDialog.hide();
        }
    }) {
        //header
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            headers.put("charset", "utf-8");
            return headers;
        }
    };
    jsonObjReqpost.setTag(tag);
    Singleton.getInstance(context).addToRequestQueue(jsonObjReqpost);
}

You can use the following method to get JsonArray as response.

public JsonArrayRequest(int method, String url, JSONObject jsonRequest,
        Listener<JSONArray> listener, ErrorListener errorListener) 
{
    super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), 
        listener, errorListener);
}

Please refer this answer for more details.

public class nameOfClass extends AsyncTask { String response;

//This process is work in Background
    @Override
    protected String doInBackground(String... params) {
        SocketConnection connection = new SocketConnection();
        String token;

        //Tocken name that is send to server
        token = "TockenName|" + "|";

        try {

            response = connection.EstablishConnection(token);

            String message = "Sorry Fail to connect";
            if (response.equals(message)) {
                onPostExecute(message);
            }
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return response;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
// In this method you can open loading msg
    }


    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        try {
            //Json object
            JSONArray array = new JSONArray(result);
            for (int i = 0; i < array.length(); i++) {

                //Hear traverse the loop and get the data

             }  
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM