Udostępnij za pośrednictwem


Szybki start: wysyłanie żądania wyszukiwania do interfejsu API REST wyszukiwania jednostek Bing przy użyciu języka C#

Ostrzeżenie

30 października 2020 r. interfejsy API Wyszukiwanie Bing zostały przeniesione z usług Azure AI do usług Wyszukiwanie Bing Services. Ta dokumentacja jest udostępniana tylko do celów referencyjnych. Aby uzyskać zaktualizowaną dokumentację, zobacz dokumentację interfejsu API wyszukiwania Bing. Aby uzyskać instrukcje dotyczące tworzenia nowych zasobów platformy Azure na potrzeby wyszukiwania Bing, zobacz Tworzenie zasobu Wyszukiwanie Bing za pośrednictwem Azure Marketplace.

Ten przewodnik Szybki start umożliwi Ci utworzenie Twojego pierwszego wywołania interfejsu API wyszukiwania jednostek Bing i wyświetlenie odpowiedzi JSON. Ta prosta aplikacja w języku C# wysyła zapytanie wyszukiwania wiadomości do interfejsu API i wyświetla odpowiedź. Kod źródłowy tej aplikacji jest dostępny w usłudze GitHub.

Mimo że ta aplikacja jest napisana w języku C#, interfejs API jest usługą internetową zgodną ze standardem RESTful z większością języków programowania.

Wymagania wstępne

Tworzenie zasobu platformy Azure

Zacznij korzystać z interfejsu API wyszukiwania jednostek Bing, tworząc jeden z następujących zasobów platformy Azure.

Zasób wyszukiwania jednostek Bing

  • Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
  • Użyj warstwy cenowej Bezpłatna, aby wypróbować usługę, a następnie uaktualnij ją do warstwy płatnej dla środowiska produkcyjnego.
  • Wyszukiwanie jednostek Bing jest również oferowane w warstwach płatnych zasobu Wyszukiwanie Bing v7.

Zasób z wieloma usługami

  • Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
  • Użyj tego samego klucza i punktu końcowego dla aplikacji w wielu usługach azure AI.

Tworzenie i inicjowanie projektu

  1. Utwórz nowe rozwiązanie konsolowe dla języka C# w programie Visual Studio.

  2. Dodaj pakiet NuGet Newtonsoft.Json .

    1. Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań.
    2. Wybierz pozycję Zarządzaj pakietami NuGet.
    3. Wyszukaj i wybierz pozycję Newtonsoft.Json, a następnie zainstaluj pakiet.
  3. Następnie dodaj następujące przestrzenie nazw do głównego pliku kodu:

    using Newtonsoft.Json;
    using System;
    using System.Net.Http;
    using System.Text;
    
  4. Utwórz nową klasę i dodaj zmienne dla punktu końcowego interfejsu API, klucza subskrypcji i zapytania, które chcesz wyszukać. Możesz użyć globalnego punktu końcowego w poniższym kodzie lub użyć niestandardowego punktu końcowego poddomeny wyświetlanego w Azure Portal dla zasobu.

    namespace EntitySearchSample
    {
        class Program
        {
            static string host = "https://api.bing.microsoft.com";
            static string path = "/v7.0/search";
    
            static string market = "en-US";
    
            // NOTE: Replace this example key with a valid subscription key.
            static string key = "ENTER YOUR KEY HERE";
    
            static string query = "italian restaurant near me";
        //...
        }
    }
    

Wysyłanie żądania i odbieranie odpowiedzi interfejsu API

  1. W klasie utwórz funkcję o nazwie Search(). W ramach tej funkcji utwórz nowy HttpClient obiekt i dodaj klucz subskrypcji do nagłówka Ocp-Apim-Subscription-Key .

  2. Łącząc hosta i ścieżkę, utwórz identyfikator URI Twojego żądania. Następnie dodaj swój rynek i kodowanie adresów URL zapytania.

  3. Poczekaj client.GetAsync() na uzyskanie odpowiedzi HTTP, a następnie zapisz odpowiedź JSON, czekając na ReadAsStringAsync().

  4. Sformatuj ciąg JSON za pomocą polecenia JsonConvert.DeserializeObject() i wydrukuj go w konsoli.

    async static void Search()
    {
     //...
     HttpClient client = new HttpClient();
     client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key);
    
     string uri = host + path + "?mkt=" + market + "&q=" + System.Net.WebUtility.UrlEncode(query);
    
     HttpResponseMessage response = await client.GetAsync(uri);
    
     string contentString = await response.Content.ReadAsStringAsync();
     dynamic parsedJson = JsonConvert.DeserializeObject(contentString);
     Console.WriteLine(parsedJson);
    }
    
  5. W metodzie Main() aplikacji wywołaj Search() funkcję .

    static void Main(string[] args)
    {
        Search();
        Console.ReadLine();
    }
    

Przykładowa odpowiedź JSON

Po pomyślnym przetworzeniu żądania zostanie zwrócona odpowiedź w formacie JSON, jak pokazano w następującym przykładzie:

{
  "_type": "SearchResponse",
  "queryContext": {
    "originalQuery": "italian restaurant near me",
    "askUserForLocation": true
  },
  "places": {
    "value": [
      {
        "_type": "LocalBusiness",
        "webSearchUrl": "https://www.bing.com/search?q=sinful+bakery&filters=local...",
        "name": "Liberty's Delightful Sinful Bakery & Cafe",
        "url": "https://www.contoso.com/",
        "entityPresentationInfo": {
          "entityScenario": "ListItem",
          "entityTypeHints": [
            "Place",
            "LocalBusiness"
          ]
        },
        "address": {
          "addressLocality": "Seattle",
          "addressRegion": "WA",
          "postalCode": "98112",
          "addressCountry": "US",
          "neighborhood": "Madison Park"
        },
        "telephone": "(800) 555-1212"
      },

      . . .
      {
        "_type": "Restaurant",
        "webSearchUrl": "https://www.bing.com/search?q=Pickles+and+Preserves...",
        "name": "Munson's Pickles and Preserves Farm",
        "url": "https://www.princi.com/",
        "entityPresentationInfo": {
          "entityScenario": "ListItem",
          "entityTypeHints": [
            "Place",
            "LocalBusiness",
            "Restaurant"
          ]
        },
        "address": {
          "addressLocality": "Seattle",
          "addressRegion": "WA",
          "postalCode": "98101",
          "addressCountry": "US",
          "neighborhood": "Capitol Hill"
        },
        "telephone": "(800) 555-1212"
      },
      
      . . .
    ]
  }
}

Następne kroki