如何在Windows Phone中使用必应搜索API ?

本文关键字:搜索 API Windows Phone | 更新日期: 2023-09-27 18:01:39

我试图使用必应搜索API来查找图像作为背景到我的应用程序内的瓷砖。我已经在我的项目中包含了BingSearchContainer.cs,但我不能使它与这里提供的样例代码工作。

任何关于如何在我的Windows Phone 8应用程序中使用必应搜索API的指导将不胜感激!

谢谢你的回答

如何在Windows Phone中使用必应搜索API ?

我希望你已经有一个AccountKey,所以我不会告诉你必须得到一个。

实施

    首先,将BingSearchContainer.cs添加到项目
  1. 实现Bing API快速入门中的c#示例代码;代码
  2. 之后,右键单击References,选择Manage NuGet Packages…查找并安装Microsoft.Data.Services.Client.WindowsP
  3. 修改示例代码,使其与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);
        }
    }
    

  1. 现在,让我们使用我提供给你的代码:

    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";
                });
            }
        }
    }