Snabbstart: Söka på webben med hjälp av REST-API:et för webbsökning i Bing och C#Quickstart: Search the web using the Bing Web Search REST API and C#

Använd den här snabbstarten för att göra ditt första anrop till API:et för webbsökning i Bing och få ett JSON-svar.Use this quickstart to make your first call to the Bing Web Search API and receive the JSON response. Detta C# programmet skickar en sökbegäran-API: et och visas svaret.This C# application sends a search request to the API, and shows the response. Även om det här programmet är skrivet i C#, är API:n en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.While this application is written in C#, the API is a RESTful Web service compatible with most programming languages.

Nödvändiga komponenterPrerequisites

Här följer några saker som du behöver innan du kör den här snabbstarten:Here are a few things that you'll need before running this quickstart:

I det här exempelprogrammet används endast .NET Core-klasser.This example program only uses .NET Core classes.

Den här snabbstarten kräver ett Azure Cognitive Services-konto med API:er för Bing-sökresultat.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Om du inte har ett konto kan du använda den kostnadsfria utvärderingsversionen för att hämta en prenumerationsnyckel.If you don't have an account, you can use the free trial to get a subscription key.

Skapa ett projekt och deklarera beroendenCreate a project and declare dependencies

Skapa ett nytt projekt i Visual Studio eller Mono.Create a new project in Visual Studio or Mono. Använd sedan den här koden för att importera nödvändiga namnrymder och typer.Then use this code to import required namespaces and types.

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

Deklarera en namnrymd och en klass för programmetDeclare a namespace and class for your program

I den här snabbstarten lägger vi det mesta av koden i klassen Program.In this quickstart, we'll put most of the code in the Program class. Börja med att skapa namnområdet BingSearchApiQuickstart och klassen Program i projektet.Start by creating the BingSearchApiQuickstart namespace and Program class in your project.

namespace BingSearchApisQuickstart
{
    class Program
    {
        // The code in the following sections goes here.
    }
}

Definiera variablerDefine variables

Några variabler måste anges innan vi kan fortsätta.A few variables must be set before we can continue. Bekräfta att uriBase är giltigt och ersätt värdet accessKey med en giltig prenumerationsnyckel från ditt Azure-konto.Confirm that the uriBase is valid and replace the accessKey value with a valid subscription key from your Azure account. Du kan anpassa sökfrågan genom att ersätta värdet för searchTerm.Feel free to customize the search query by replacing the value for searchTerm. Kom ihåg att lägga till koden för den Program klassen som anges ovan.Remember to add this code to the Program class as noted above.

// Enter a valid subscription key.
const string accessKey = "enter key here";
/*
 * If you encounter unexpected authorization errors, double-check this value
 * against the endpoint for your Bing Web search instance in your Azure
 * dashboard.
 */
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/search";
const string searchTerm = "Microsoft Cognitive Services";

Deklarera Main-metodenDeclare the Main method

Den Main() metod krävs och det är den första metoden anropas när programmet startas.The Main() method is required and it's the first method invoked when the program is started. I det här programmet verifierar huvudmetoden accessKey, gör en begäran och skriver ut svaret.In this application, the main method validates the accessKey, makes a request, and prints the response.

Tänk på att main() är beroende av metoder som skapas i de avsnitt som följer.Keep in mind that main() is dependent on methods that are created in the next few sections.

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

Skapa en struct för sökresultatCreate a struct for search results

Den här structen returnerar sökresultat med relevanta rubriker.This struct returns search results with relevant headers. Den anropas när du gör en begäran till Bing Web Search API för att skapa ett resultatobjekt.It's called when making a request to the Bing Web Search API to create a result object.

// Returns search results with headers.
struct SearchResult
{
    public String jsonResult;
    public Dictionary<String, String> relevantHeaders;
}

Skapa en begäranConstruct a request

Använd den här koden för att konstruera sökfrågan, utföra GET-begäran och hantera svaret.Use this code to construct the search query, perform the GET request, and handle the response.

/// <summary>
/// Makes a request to the Bing Web Search API and returns data as a SearchResult.
/// </summary>
static SearchResult BingWebSearch(string searchQuery)
{
    // Construct the search request URI.
    var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(searchQuery);

    // Perform request and get a 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 a result object.
    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;
}

Formatera svaretFormat the response

Den här metoden formaterar JSON-svaret, främst vad gäller indentering och att lägga till radbrytningar.This method formats the JSON response, primarily indenting and adding line breaks.

/// <summary>
/// Formats the JSON string by adding line breaks and indents.
/// </summary>
/// <param name="json">The raw JSON string.</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();
}

Färdigställa alltPut it all together

Det sista steget är att köra koden!The last step is to run your code! Om du vill jämföra din kod med vår finns exempelkoden på GitHub.If you'd like to compare your code with ours, sample code is available on GitHub.

ExempelsvarSample response

Svar från API för webbsökning i Bing returneras som JSON.Responses from the Bing Web Search API are returned as JSON. Det här exempelsvaret har trunkerats för att visa ett enskilt resultat.This sample response has been truncated to show a single result.

{
  "_type": "SearchResponse",
  "queryContext": {
    "originalQuery": "Microsoft Cognitive Services"
  },
  "webPages": {
    "webSearchUrl": "https://www.bing.com/search?q=Microsoft+cognitive+services",
    "totalEstimatedMatches": 22300000,
    "value": [
      {
        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
        "name": "Microsoft Cognitive Services",
        "url": "https://www.microsoft.com/cognitive-services",
        "displayUrl": "https://www.microsoft.com/cognitive-services",
        "snippet": "Knock down barriers between you and your ideas. Enable natural and contextual interaction with tools that augment users' experiences via the power of machine-based AI. Plug them in and bring your ideas to life.",
        "deepLinks": [
          {
            "name": "Face API",
            "url": "https://azure.microsoft.com/services/cognitive-services/face/",
            "snippet": "Add facial recognition to your applications to detect, identify, and verify faces using a Face API from Microsoft Azure. ... Cognitive Services; Face API;"
          },
          {
            "name": "Text Analytics",
            "url": "https://azure.microsoft.com/services/cognitive-services/text-analytics/",
            "snippet": "Cognitive Services; Text Analytics API; Text Analytics API . Detect sentiment, ... you agree that Microsoft may store it and use it to improve Microsoft services, ..."
          },
          {
            "name": "Computer Vision API",
            "url": "https://azure.microsoft.com/services/cognitive-services/computer-vision/",
            "snippet": "Extract the data you need from images using optical character recognition and image analytics with Computer Vision APIs from Microsoft Azure."
          },
          {
            "name": "Emotion",
            "url": "https://www.microsoft.com/cognitive-services/en-us/emotion-api",
            "snippet": "Cognitive Services Emotion API - microsoft.com"
          },
          {
            "name": "Bing Speech API",
            "url": "https://azure.microsoft.com/services/cognitive-services/speech/",
            "snippet": "Add speech recognition to your applications, including text to speech, with a speech API from Microsoft Azure. ... Cognitive Services; Bing Speech API;"
          },
          {
            "name": "Get Started for Free",
            "url": "https://azure.microsoft.com/services/cognitive-services/",
            "snippet": "Add vision, speech, language, and knowledge capabilities to your applications using intelligence APIs and SDKs from Cognitive Services."
          }
        ]
      }
    ]
  },
  "relatedSearches": {
    "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches",
    "value": [
      {
        "text": "microsoft bot framework",
        "displayText": "microsoft bot framework",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+bot+framework"
      },
      {
        "text": "microsoft cognitive services youtube",
        "displayText": "microsoft cognitive services youtube",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+youtube"
      },
      {
        "text": "microsoft cognitive services search api",
        "displayText": "microsoft cognitive services search api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+search+api"
      },
      {
        "text": "microsoft cognitive services news",
        "displayText": "microsoft cognitive services news",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+news"
      },
      {
        "text": "ms cognitive service",
        "displayText": "ms cognitive service",
        "webSearchUrl": "https://www.bing.com/search?q=ms+cognitive+service"
      },
      {
        "text": "microsoft cognitive services text analytics",
        "displayText": "microsoft cognitive services text analytics",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+text+analytics"
      },
      {
        "text": "microsoft cognitive services toolkit",
        "displayText": "microsoft cognitive services toolkit",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+toolkit"
      },
      {
        "text": "microsoft cognitive services api",
        "displayText": "microsoft cognitive services api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+api"
      }
    ]
  },
  "rankingResponse": {
    "mainline": {
      "items": [
        {
          "answerType": "WebPages",
          "resultIndex": 0,
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0"
          }
        }
      ]
    },
    "sidebar": {
      "items": [
        {
          "answerType": "RelatedSearches",
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches"
          }
        }
      ]
    }
  }
}

Nästa stegNext steps

Se ocksåSee also