Sagar Atalatti
Sagar Atalatti

Reputation: 505

Volley JSON Exception with Bing Search API

I have implementing Bing Images Search API with Volley I need to request for the JSONArray values to request all the thumbnail urls. Here is the JSON format for the Bing Image Search:

[  
   {  
      "_type":"Images",
      "instrumentation":{  

      },
      "readLink":"https:\/\/api.cognitive.microsoft.com\/api\/v7\/images\/search?q=puppies",
      "webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=puppies&FORM=OIIARP",
      "totalEstimatedMatches":995,
      "nextOffset":37,
      "value":[  
         {  
            "webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=puppies&id=01FB7631BE5F833B1851922E2AE55143A9DDA195&simid=608039673288263152",
            "name":"Cute Golden Retriever Puppies Photos ~ Cute Puppies Pictures, Puppy Photos",
            "thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.sa4AFBPcfVJbIx1MEkakmgHaFj&pid=Api",
            "datePublished":"2018-02-04T22:46:00.0000000Z",
            "contentUrl":"http:\/\/1.bp.blogspot.com\/-NnDHYuLcDbE\/ToJ6Rd6Dl5I\/AAAAAAAACa4\/NzFAKfIV_CQ\/s1600\/golden_retriever_puppies.jpg",
            "hostPageUrl":"http:\/\/puppiesphotos.blogspot.com\/2013\/01\/cute-golden-retriever-puppies-photos.html",
            "contentSize":"376369 B",
            "encodingFormat":"jpeg",
            "hostPageDisplayUrl":"puppiesphotos.blogspot.com\/2013\/01\/cute-golden-retriever-puppies...",
            "width":1600,
            "height":1200,
            "thumbnail":{  
               "width":474,
               "height":355
            },
            "imageInsightsToken":"ccid_sa4AFBPc*mid_01FB7631BE5F833B1851922E2AE55143A9DDA195*simid_608039673288263152*thid_OIP.sa4AFBPcfVJbIx1MEkakmgHaFj",
            "insightsMetadata":{  
               "recipeSourcesCount":0,
               "bestRepresentativeQuery":{  
                  "text":"Cute Golden Retriever Puppies",
                  "displayText":"Cute Golden Retriever Puppies",
                  "webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Cute+Golden+Retriever+Puppies&id=01FB7631BE5F833B1851922E2AE55143A9DDA195&FORM=IDBQDM"
               },
               "pagesIncludingCount":1238,
               "availableSizesCount":240
            },
            "imageId":"01FB7631BE5F833B1851922E2AE55143A9DDA195",
            "accentColor":"AA6F21"
         }
      ]
   }
]

This is my Volley Request for JSON Array.

private void requestedTrendingImages(String url) {
    Log.d("Query URL: ", url);

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());
                    try {
                        for (int i = 0; i < response.length(); i++) {
                            JSONObject images = response.getJSONObject(i);
                            jsonResponse = images.getString("thumbnailUrl");
                            Log.d(TAG, jsonResponse);
                        }

                        Log.d(TAG, jsonResponse);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

    HolaApp.getInstance().addToRequestQueue(jsonArrayRequest);
}    

My String URL is correct I am new to Volley could anyone help me with parsing JSON Array.

Upvotes: 0

Views: 140

Answers (3)

Sagar Atalatti
Sagar Atalatti

Reputation: 505

Well I found out the answer final which worked for me. I should have used JSONObject instead of JSONArray!

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        newRequestSearchImages(Constants.BING_ENDPOINT_SEARCH + Constants.QUERY + "puppies" + Constants.API_KEY);
    }

    private void newRequestSearchImages(String url){

        JsonObjectRequest jsonObjectRequest = 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("value");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject object = jsonArray.getJSONObject(i);
                        jsonResponse = object.getString("thumbnailUrl");
                        Log.d(TAG, jsonResponse);

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d(TAG, error.getMessage());
            }
        });

        HolaApp.getInstance().addToRequestQueue(jsonObjectRequest);
    }

Upvotes: 0

EL TEGANI MOHAMED
EL TEGANI MOHAMED

Reputation: 1898

 public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    try {

                    JSONArray jsonArray = response.getJSONArray("value");
                for (int i = 0; i < jsonArray.length(); i++)
                {
                    JSONObject Image     = (JSONObject) jsonArray.get(i);
                     urls                = Image.getString("thumbnailUrl");
                    Log.d(TAG, "onResponse: "+urls);

                }

                        Log.d(TAG, jsonResponse);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }
                }

Upvotes: 1

Tomer Shemesh
Tomer Shemesh

Reputation: 13415

try this

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    try {
                        JSONArray values = response.getJSONArray("value")
                        for (int i = 0; i < values.length(); i++) {
                            String url = values.getJSONObject(i).getString("thumbnailUrl");
                            //do something with the url
                            Log.d(TAG, url);
                        }

                        Log.d(TAG, jsonResponse);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

Upvotes: 0

Related Questions