How do I use the Bing Search API in Windows Phone?

后端 未结 1 1163
陌清茗
陌清茗 2020-12-30 17:51

I\'m trying to use the Bing Search API to find images as backgrounds to the tiles inside of my app. I\'ve included the BingSearchContainer.cs in my Project but I can\'t make

相关标签:
1条回答
  • 2020-12-30 18:19

    I expect that you already have a AccountKey so I wont tell you have to get one.

    Implementation

    1. First of all, add the BingSearchContainer.cs to your project
    2. Implement the sample C# code found in the Bing API Quick Start & Code
    3. Thereafter, right-click References and choose Manage NuGet Packages... and search for, and install, Microsoft.Data.Services.Client.WindowsP.
    4. Modify the sample code so that it work with Windows Phone:

      using Bing;
      using System;
      using System.Data.Services.Client;
      using System.Linq;
      using System.Net;
      
      namespace StackOverflow.Samples.BingSearch
      {
          public class Finder
          {
              public void FindImageUrlsFor(string searchQuery)
              {
                  // Create a Bing container. 
                  string rootUri = "https://api.datamarket.azure.com/Bing/Search";
                  var bingContainer = new Bing.BingSearchContainer(new Uri(rootUri));
                  bingContainer.UseDefaultCredentials = false;
      
                  // Replace this value with your account key. 
                  var accountKey = "YourAccountKey";
      
                  // Configure bingContainer to use your credentials. 
                  bingContainer.Credentials = new NetworkCredential(accountKey, accountKey);
      
                  // Build the query. 
                  var imageQuery = bingContainer.Image(query, null, null, null, null, null, null);
      
                  imageQuery.BeginExecute(_onImageQueryComplete, imageQuery);
      
              }
      
              // Handle the query callback. 
              private void _onImageQueryComplete(IAsyncResult imageResults)
              {
                  // Get the original query from the imageResults.
                  DataServiceQuery<Bing.ImageResult> query =
                      imageResults.AsyncState as DataServiceQuery<Bing.ImageResult>;
      
                  var resultList = new List<string>();
      
                  foreach (var result in query.EndExecute(imageResults))
                      resultList.Add(result.MediaUrl);
      
                  FindImageCompleted(this, resultList);
              }
      
              public event FindImageUrlsForEventHandler FindImageUrlsForCompleted;
              public delegate void FindImageUrlsForEventHandler(object sender, List<string> result);
          }
      }
      

    Example

    1. And now, let's use the code I provided you with:

      using Bing;
      using System;
      using System.Data.Services.Client;
      using System.Linq;
      using System.Net;
      
      namespace StackOverflow.Samples.BingSearch
      {
          public class MyPage
          {
              private void Button_Click_1(object sender, RoutedEventArgs e)
              {
                  var finder = new Finder();
                  finder.FindImageUrlsForCompleted += finder_FindImageUrlsForCompleted;
                  finder.FindImageUrlsFor("candy");
              }
      
              void finder_FindImageUrlsForCompleted(object sender, List<string> result)
              {
                  Deployment.Current.Dispatcher.BeginInvoke(() =>
                  {
                      foreach (var s in result)
                          MyTextBox.Text += s + "\n";
                  });
              }
          }
      }
      
    0 讨论(0)
提交回复
热议问题