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
- Dowolna wersja programu Visual Studio 2017 lub nowszego.
- Jeśli używasz systemu Linux lub MacOS, możesz skorzystać z tego przewodnika Szybki start, korzystając z Visual Studio Code i platformy .NET Core
- Bezpłatne konto platformy Azure
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
Utwórz nowe rozwiązanie konsolowe dla języka C# w programie Visual Studio.
Dodaj pakiet NuGet Newtonsoft.Json .
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań.
- Wybierz pozycję Zarządzaj pakietami NuGet.
- Wyszukaj i wybierz pozycję Newtonsoft.Json, a następnie zainstaluj pakiet.
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;
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
W klasie utwórz funkcję o nazwie
Search()
. W ramach tej funkcji utwórz nowyHttpClient
obiekt i dodaj klucz subskrypcji do nagłówkaOcp-Apim-Subscription-Key
.Łącząc hosta i ścieżkę, utwórz identyfikator URI Twojego żądania. Następnie dodaj swój rynek i kodowanie adresów URL zapytania.
Poczekaj
client.GetAsync()
na uzyskanie odpowiedzi HTTP, a następnie zapisz odpowiedź JSON, czekając naReadAsStringAsync()
.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); }
W metodzie
Main()
aplikacji wywołajSearch()
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"
},
. . .
]
}
}