如何为Bing自动填充设置API订阅密钥?

时间:2018-02-11 19:59:20

标签: c# .net windows forms

以下代码显示: Bing Search API订阅密钥无效! 请将您的信息粘贴到源代码中。

我发现我需要用我的访问密钥替换“YOUR-ACCESS-KEY”,如何获取C#Windows窗体应用程序的访问密钥,并为每个人发布它?

这是程序,我需要获得Bing搜索的自动完成功能。 https://sites.google.com/site/searchfromdesktop/

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Collections.Generic;

namespace BingSearchApisQuickstart
{
class Program
{
    // Replace the accessKey string value with your valid access key.
    const string accessKey = "YOUR-ACCESS-KEY";

    const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/search"; 

    const string searchTerm = "Yosemite National Park"; //Replace with your search terms.


    // Used to return search results including relevant headers
    struct SearchResult
    {
        public String jsonResult;
        public Dictionary<String, String> relevantHeaders;
    }

    static void Main()
    {
        Console.OutputEncoding = System.Text.Encoding.UTF8;

        if (accessKey.Length == 32)
        {
            Console.WriteLine("Searching the Web for: " + searchTerm);

            SearchResult result = BingWebSearch(searchTerm);

            Console.WriteLine("\nRelevant HTTP Headers:\n");
            foreach (var header in result.relevantHeaders)
                Console.WriteLine(header.Key + ": " + header.Value);

            Console.WriteLine("\nJSON Response:\n");
            Console.WriteLine(JsonPrettyPrint(result.jsonResult));
        }
        else
        {
            Console.WriteLine("Invalid Bing Search API subscription key!");
            Console.WriteLine("Please paste yours into the source code.");
        }

        Console.Write("\nPress Enter to exit ");
        Console.ReadLine();
    }

    /// <summary>
    /// Performs a Bing Web search and return the results as a SearchResult.
    /// </summary>
    static SearchResult BingWebSearch(string searchQuery)
    {
        // Construct the URI of the search request
        var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(searchQuery);

        // Perform the Web request and get the response
        WebRequest request = HttpWebRequest.Create(uriQuery);
        request.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
        HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result;
        string json = new StreamReader(response.GetResponseStream()).ReadToEnd();

        // Create result object for return
        var searchResult = new SearchResult()
        {
            jsonResult = json,
            relevantHeaders = new Dictionary<String, String>()
        };

        // Extract Bing HTTP headers
        foreach (String header in response.Headers)
        {
            if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-"))
                searchResult.relevantHeaders[header] = response.Headers[header];
        }

        return searchResult;
    }

    /// <summary>
    /// Formats the given JSON string by adding line breaks and indents.
    /// </summary>
    /// <param name="json">The raw JSON string to format.</param>
    /// <returns>The formatted JSON string.</returns>
    static string JsonPrettyPrint(string json)
    {
        if (string.IsNullOrEmpty(json))
            return string.Empty;

        json = json.Replace(Environment.NewLine, "").Replace("\t", "");

        StringBuilder sb = new StringBuilder();
        bool quote = false;
        bool ignore = false;
        char last = ' ';
        int offset = 0;
        int indentLength = 2;

        foreach (char ch in json)
        {
            switch (ch)
            {
                case '"':
                    if (!ignore) quote = !quote;
                    break;
                case '\\':
                    if (quote && last != '\\') ignore = true;
                    break;
            }

            if (quote)
            {
                sb.Append(ch);
                if (last == '\\' && ignore) ignore = false;
            }
            else
            {
                switch (ch)
                {
                    case '{':
                    case '[':
                        sb.Append(ch);
                        sb.Append(Environment.NewLine);
                        sb.Append(new string(' ', ++offset * indentLength));
                        break;
                    case '}':
                    case ']':
                        sb.Append(Environment.NewLine);
                        sb.Append(new string(' ', --offset * indentLength));
                        sb.Append(ch);
                        break;
                    case ',':
                        sb.Append(ch);
                        sb.Append(Environment.NewLine);
                        sb.Append(new string(' ', offset * indentLength));
                        break;
                    case ':':
                        sb.Append(ch);
                        sb.Append(' ');
                        break;
                    default:
                        if (quote || ch != ' ') sb.Append(ch);
                        break;
                }
            }
            last = ch;
        }

        return sb.ToString().Trim();
    }
    }
}

0 个答案:

没有答案