Faiz Ahmed
Faiz Ahmed

Reputation: 97

Not able to fetch JSON data [using volley Library] in Android

The jason array request code goes like this:

     JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET,url, (JSONArray) null , new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                try {
                    Log.d("Response:", String.valueOf(response.getJSONObject(0)));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(context, "Response not recieved", Toast.LENGTH_SHORT).show();
            }
        });

And I've used a singleton instance of a request queue, to fetch the data,

AppController.getInstance(context.getApplicationContext()).addToRequestQueue(arrayRequest);

I'm using an api service that supplies a bunch of questions (The api generates a url, which returns a collection of JSON Objects, An Array (Just try and Open the url link, the json array will be seen)

But when I run the app, the request is not even getting a response,the progam flow is going into the error listner block.

Can someone explain this behaviour? Is it because the JSON array supplied by the url, has nested arrays? Why?

I tried reading and anlyzing other questions here, which might have the same issue, But i found nothing.

Upvotes: 1

Views: 292

Answers (1)

MohammadAli
MohammadAli

Reputation: 3456

You want to just change JsonArrayRequest to JsonObjectRequest:

Please copy and paste below code:

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

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("TAG", response.toString());

                        try {
                            JSONArray jsonArray = response.getJSONArray("results");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                String category = jsonObject.getString("category");
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {

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

        AppController.getInstance().addToRequestQueue(jsonObjReq, "TAG"); 

Follow this link for learn other request: Androidhive

Upvotes: 2

Related Questions