2013-10-22 38 views
5

我在我的Android應用程序中使用Google圖像搜索API來搜索圖像。它工作正常,但我只收到8個查詢結果。獲取超過8個圖像搜索結果

我怎樣才能得到比8張圖片更多? (或者有什麼更好的辦法來搜索圖片?)

下面是我的代碼:

public class getImagesTask extends AsyncTask<Void, Void, Void> 
     { 
      JSONObject json; 
      ProgressDialog dialog; 

      @Override 
      protected void onPreExecute() { 
       // TODO Auto-generated method stub 
       super.onPreExecute(); 

       dialog = ProgressDialog.show(GoogleSearchAPIExampleActivity.this, "", "Please wait..."); 
      } 

      @Override 
      protected Void doInBackground(Void... params) { 
       // TODO Auto-generated method stub 

       URL url; 
       try { 
        url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" + 
        "v=1.0&q="+strSearch+"&rsz=8"); //&key=ABQIAAAADxhJjHRvoeM2WF3nxP5rCBRcGWwHZ9XQzXD3SWg04vbBlJ3EWxR0b0NVPhZ4xmhQVm3uUBvvRF-VAA&userip=192.168.0.172"); 

       URLConnection connection = url.openConnection(); 
       connection.addRequestProperty("Referer", "http://technotalkative.com"); 

       String line; 
       StringBuilder builder = new StringBuilder(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
       while((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 

       System.out.println("Builder string => "+builder.toString()); 

       json = new JSONObject(builder.toString()); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) { 
       // TODO Auto-generated method stub 
       super.onPostExecute(result); 

       if(dialog.isShowing()) 
       { 
        dialog.dismiss(); 
       } 

       try { 
        JSONObject responseObject = json.getJSONObject("responseData"); 
        JSONArray resultArray = responseObject.getJSONArray("results"); 

        listImages = getImageList(resultArray); 
        SetListViewAdapter(listImages); 
        System.out.println("Result array length => "+resultArray.length()); 
       } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      } 
     } 

logcat的:

10 - 22 09: 32: 08.020: I/System.out(2614): Builder string = > { 
"responseData": { 
    "results": [{ 
      "GsearchResultClass": "GimageSearch", 
      "width": "948", 
      "height": "532", 
      "imageId": "ANd9GcRjL9QC6U-D2kjCE3NHvmkaDj1U3j46xsqrdsT3xwVkBdcxcV-jakbK2so", 
      "tbWidth": "148", 
      "tbHeight": "83", 
      "unescapedUrl": "http://media.npr.org/assets/img/2013/05/22/ap401533991888_wide-870363ccd3eb24d332ecc17b6bb44a351a5da196-s6-c30.jpg", 
      "url": "http://media.npr.org/assets/img/2013/05/22/ap401533991888_wide-870363ccd3eb24d332ecc17b6bb44a351a5da196-s6-c30.jpg", 
      "visibleUrl": "www.npr.org", 
      "title": "Polio Outbreak In Kenya: \u003cb\u003eA\u003c/b\u003e Threat To Global Eradication : Shots \u003cb\u003e...\u003c/b\u003e", 
      "titleNoFormatting": "Polio Outbreak In Kenya: A Threat To Global Eradication : Shots ...", 
      "originalContextUrl": "http://www.npr.org/blogs/health/2013/05/22/185996377/polio-outbreak-in-kenya-a-threat-to-global-eradication", 
      "content": "Polio Outbreak In Kenya: \u003cb\u003eA\u003c/b\u003e Threat To Global Eradication : Shots", 
      "contentNoFormatting": "Polio Outbreak In Kenya: A Threat To Global Eradication : Shots", 
      "tbUrl": "http://t1.gstatic.com/images?q\u003dtbn:ANd9GcRjL9QC6U-D2kjCE3NHvmkaDj1U3j46xsqrdsT3xwVkBdcxcV-jakbK2so" 
     }, { 
      "GsearchResultClass": "GimageSearch", 
      "width": "600", 
      "height": "424", 
      "imageId": "ANd9GcQKbMdb_XZJ1TqEcYBz3TC-psl-NYRwzMzBRDU1tmB8dpUOWlOp0l2IHII", 
      "tbWidth": "135", 
      "tbHeight": "95", 
      "unescapedUrl": "http://graphics8.nytimes.com/images/2013/05/31/arts/artsspecial/31iht-rfrcballet31A/31iht-rfrcballet31A-articleLarge.jpg", 
      "url": "http://graphics8.nytimes.com/images/2013/05/31/arts/artsspecial/31iht-rfrcballet31A/31iht-rfrcballet31A-articleLarge.jpg", 
      "visibleUrl": "www.nytimes.com", 
      "title": "\u003cb\u003eA\u003c/b\u003e Fresh Era of Wit and Innovation in Ballet - NYTimes.", 
      "titleNoFormatting": "A Fresh Era of Wit and Innovation in Ballet - NYTimes.", 
      "originalContextUrl": "http://www.nytimes.com/2013/05/31/arts/artsspecial/A-Fresh-Era-of-Wit-and-Innovation-in-Ballet.html", 
      "content": "\u003cb\u003eA\u003c/b\u003e Fresh Era of Wit and Innovation in Ballet - NYTimes.", 
      "contentNoFormatting": "A Fresh Era of Wit and Innovation in Ballet - NYTimes.", 
      "tbUrl": "http://t0.gstatic.com/images?q\u003dtbn:ANd9GcQKbMdb_XZJ1TqEcYBz3TC-psl-NYRwzMzBRDU1tmB8dpUOWlOp0l2IHII" 
     }, { 
      "GsearchResultClass": "GimageSearch", 
      "width": "425", 
      "height": "283", 
      "imageId": "ANd9GcSCIN0Dn0f2rfd-GpdhQ9TuhMt3O0i2X7JKAFSARBFm460PQ1Bd-5eNSsk", 
      "tbWidth": "126", 
      "tbHeight": "84", 
      "unescapedUrl": "http://www.usnews.com/pubdbimages/image/45181/FE_DA_0307_Marine425x283.jpg", 
      "url": "http://www.usnews.com/pubdbimages/image/45181/FE_DA_0307_Marine425x283.jpg", 
      "visibleUrl": "www.usnews.com", 
      "title": "Can Old Marine Strategies Fight \u003cb\u003ea\u003c/b\u003e New Pacific War? - US News and \u003cb\u003e...\u003c/b\u003e", 
      "titleNoFormatting": "Can Old Marine Strategies Fight a New Pacific War? - US News and ...", 
      "originalContextUrl": "http://www.usnews.com/news/articles/2013/03/07/can-old-marine-strategies-fight-a-new-pacific-war", 
      "content": "Can Old Marine Strategies Fight \u003cb\u003ea\u003c/b\u003e New Pacific War? - US News and", 
      "contentNoFormatting": "Can Old Marine Strategies Fight a New Pacific War? - US News and", 
      "tbUrl": "http://t2.gstatic.com/images?q\u003dtbn:ANd9GcSCIN0Dn0f2rfd-GpdhQ9TuhMt3O0i2X7JKAFSARBFm460PQ1Bd-5eNSsk" 
     }, { 
      "GsearchResultClass": "GimageSearch", 
      "width": "460", 
      "height": "276", 
      "imageId": "ANd9GcTBwAl3G4zqkRw1qx4gMs6gfWfR8YAz-X7HhW6GkfJEBADHDIdDUBpxHhA", 
      "tbWidth": "128", 
      "tbHeight": "77", 
      "unescapedUrl": "http://static.guim.co.uk/sys-images/Arts/Arts_/Pictures/2013/2/12/1360689033304/A-2002-version-of-The-Rit-010.jpg", 
      "url": "http://static.guim.co.uk/sys-images/Arts/Arts_/Pictures/2013/2/12/1360689033304/A-2002-version-of-The-Rit-010.jpg", 
      "visibleUrl": "www.theguardian.com", 
      "title": "The Rite of Spring: \u0026#39;The work of \u003cb\u003ea\u003c/b\u003e madman\u0026#39; | Music | The Guardian", 
      "titleNoFormatting": "The Rite of Spring: \u0026#39;The work of a madman\u0026#39; | Music | The Guardian", 
      "originalContextUrl": "http://www.theguardian.com/music/2013/feb/12/rite-of-spring-stravinsky", 
      "content": "The Rite of Spring: \u00 
+0

'rsz = 8'是什麼意思? –

+0

用戶需要的搜索結果數量...此處表示8表示將生成最多8個搜索結果。我試圖改變這個數字,並嘗試,但它只給出8個圖像... –

+0

正如你所說的增加大小並不能解決你的目的。把字符串'strSearch'的完整url和值。 –

回答

4
url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" + 
         "v=1.0&q="+strSearch+"&rsz=8&start=0"); 

在這裏您只能使用此API獲得64圖片結果。

現在這裏發生了什麼,如果你設置了開始variable=9,它會在輸出中增加一個圖像,但第一個圖像將消失(因爲我們每頁只能獲得8個圖像)。

現在,當您設置開始variable=8,你會得到一個8個鏡像文件(包括接下來的8張圖片網頁數字2)。

同樣,如果你設置開始variable=16,你會得到一個8個影像(第number3的旁邊8個圖像)。

同樣,如果你設置開始variable=24,你會得到一個8個鏡像文件(包括接下來的8張圖片網頁號碼4)等。

您將獲得的圖像,直到這個網址。

url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" + 
          "v=1.0&q="+strSearch+"&rsz=8&start=56"); 
(8th page) 
從這裏

現在,如果你開始增加變量,如start=57,就沒有輸出。

+0

ohhhh ....它的工作....好一個哥們.... –

0

該服務僅調用8個圖像。爲了擁有超過8張圖片,您需要多次撥打此服務。 看到這個answer,這是你想要的。