Quickstart: Een zoekaanvraag naar de REST-API van Bing Entiteiten zoeken sturen met C#
Waarschuwing
Op 30 oktober 2020 zijn de Zoeken in Bing API's verplaatst van Azure AI-services naar Zoeken in Bing Services. Deze documentatie is alleen bedoeld ter referentie. Zie de bing-documentatie voor zoeken-API voor bijgewerkte documentatie. Zie Een Zoeken in Bing-resource maken via de Azure Marketplace voor instructies over het maken van nieuwe Azure-resources voor Bing Search.
Gebruik deze quickstart om voor het eerst de Bing Entiteiten zoeken-API aan te roepen en het JSON-antwoord te bekijken. Deze eenvoudige C#-toepassing stuurt een query naar de API om nieuws te zoeken en geeft het antwoord weer. De broncode voor deze toepassing is beschikbaar op GitHub.
Hoewel deze toepassing is geschreven in C#, is de API een RESTful-webservice die compatibel is met vrijwel elke programmeertaal.
Vereisten
- Een versie van Visual Studio 2017 of hoger.
- Of als u Linux of MacOS gebruikt, kunt u deze quickstart volgen met behulp van Visual Studio Code en .NET Core
- Gratis Azure-account
Een Azure-resource maken
Begin met het gebruik van de Bing Entity Search-API door een van de volgende Azure-resources te maken.
Bing Entity Search-resource
- Beschikbaar via de Azure-portal totdat u de resource verwijdert.
- Gebruik de gratis prijscategorie om de service uit te proberen, en voer later een upgrade uit naar een betaalde categorie voor productie.
- Bing Entity Search wordt ook aangeboden in betaalde categorieën van de Bing Search v7-resource.
Resource voor meerdere services
- Beschikbaar via de Azure-portal totdat u de resource verwijdert.
- Gebruik dezelfde sleutel en hetzelfde eindpunt voor uw toepassingen, in meerdere Azure AI-services.
Een project maken en initialiseren
Maak een nieuwe C#-console-oplossing in Visual Studio.
Voeg het NuGet-pakket Newtonsoft.Json toe.
- Klik met de rechtermuisknop op uw project in Solution Explorer.
- Selecteer NuGet-pakketten beheren.
- Zoek en selecteer Newtonsoft.Json en installeer het pakket.
Voeg de volgende naamruimten in het hoofdcodebestand in:
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Maak een nieuwe klasse en voeg variabelen toe voor het API-eindpunt, uw abonnementssleutel en de query waarop u wilt zoeken. U kunt het globale eindpunt in de volgende code gebruiken of het eindpunt voor een aangepast subdomein gebruiken dat wordt weergegeven in de Azure-portal voor uw resource.
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"; //... } }
Een aanvraag verzenden en het API-antwoord ontvangen
Maak in de klasse een functie met de naam
Search()
. Maak in deze functie een nieuwHttpClient
-object en voeg uw abonnementssleutel toe aan deOcp-Apim-Subscription-Key
-header.Maak de URI voor uw aanvraag door de host en het pad te combineren. Voeg vervolgens uw markt toe en pas URL-codering toe op uw query.
Wacht totdat
client.GetAsync()
een HTTP-antwoord krijgt en sla vervolgens het JSON-antwoord op door te wachten opReadAsStringAsync()
.Maak de JSON-tekenreeks op met
JsonConvert.DeserializeObject()
en geef deze weer op de console.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); }
Roep in de methode
Main()
van uw toepassing de functieSearch()
aan.static void Main(string[] args) { Search(); Console.ReadLine(); }
Voorbeeld van JSON-antwoord
Een geslaagd antwoord wordt geretourneerd in de JSON-indeling, zoals u kunt zien in het volgende voorbeeld:
{
"_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"
},
. . .
]
}
}