2014-07-17 49 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), "\'"));