2014-07-17 46 views
1

我正在使用bing圖片搜索api從bing中檢索一些圖片。我想要檢索中等或較大的小圖像,具體取決於我想要實現的任務。但是,看起來我做錯了什麼。必應圖片搜索api filter大小

這裏是我的代碼:

  // This is the query - or you could get it from args. 

      string query = keyword; 

      // Create a Bing container. 

      string rootUri = "https://api.datamarket.azure.com/Bing/Search"; 

      var bingContainer = new Bing.BingSearchContainer(new Uri(rootUri)); 

      // Configure bingContainer to use your credentials. 

      bingContainer.Credentials = new NetworkCredential(uid, uid); 

      // Build the query. 


      var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, null); 

      switch (i) 
      { 
       case 0: 
        imageQuery = imageQuery.AddQueryOption("Size", "Small"); 
        break; 
       case 1: 
        imageQuery = imageQuery.AddQueryOption("Size", "Medium"); 
        break; 
       case 2: 
        imageQuery = imageQuery.AddQueryOption("Size", "Large"); 
        break; 
      } 
      var imageResults = imageQuery.Execute(); 

      foreach (var result in imageResults) 
      { 

       Console.WriteLine(result.Title + ":" + result.MediaUrl); 

      } 

我在var imageResults = imageQuery.Execute()

得到一個錯誤以下是錯誤An error occurred while processing this request

的imageQuery看起來像這樣(當拋出異常): Link

它在沒有過濾器的情況下工作。

任何建議,將不勝感激。

+0

如果這是完全相同的代碼,它不應該被編譯 - 「大」 – sarh

+0

錯過了,當我在這裏發佈它時丟失括號 – user3564958

回答

0

您可以使用構造:

var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, "Size:Small"); 

注意,在內部它的作用是這樣的:

query = query.AddQueryOption("ImageFilters", string.Concat("\'", System.Uri.EscapeDataString(ImageFilters), "\'")); 

哪裏query是您imageQuery

所以,如果你不想使用在構造函數中,您應該可以如下切換個案(0,1,2):

var imageQuery = bingContainer.Image(keyword, null, null, null, null, null, null); 

string imageFilters; 
switch (i) 
{ 
    case 0: 
     imageFilters= ("Size:Small"); 
     break; 
    case 1: 
     imageFilters= ("Size:Medium"); 
     break; 
    case 2: 
     imageFilters= ("Size:Large"); 
     break; 
} 
imageQuery = query.AddQueryOption("ImageFilters", string.Concat("\'", System.Uri.EscapeDataString(imageFilters), "\'"));