Guida introduttiva: Inviare una richiesta di ricerca all'API REST Ricerca entità Bing usando C#
Avviso
Il 30 ottobre 2020 le API di Ricerca Bing spostate dai servizi di intelligenza artificiale di Azure ai servizi Ricerca Bing. Questa documentazione viene fornita solo per informazioni di riferimento. Per la documentazione aggiornata, vedere la documentazione dell'API di ricerca Bing. Per istruzioni sulla creazione di nuove risorse di Azure per la ricerca Bing, vedere Creare una risorsa Ricerca Bing tramite la Azure Marketplace.
Usare questa guida introduttiva per eseguire la prima chiamata all'API Ricerca entità Bing e visualizzare la risposta JSON. Questa semplice applicazione C# invia una query di ricerca notizie all'API e visualizza la risposta. Il codice sorgente di questa applicazione è disponibile in GitHub.
Anche se l'applicazione è scritta in C#, l'API è un servizio Web RESTful compatibile con la maggior parte dei linguaggi di programmazione.
Prerequisiti
- Qualsiasi edizione di Visual Studio 2017 o versioni successive.
- In alternativa, se si usa Linux o MacOS, è possibile seguire questa guida di avvio rapido usando Visual Studio Code e .NET Core
- Account Azure gratuito
Creare una risorsa di Azure
Per iniziare a usare l'API Ricerca entità Bing, creare una delle risorse di Azure seguenti.
Risorsa Ricerca entità Bing
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare il piano tariffario gratuito per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- Ricerca entità Bing è disponibile anche nei livelli a pagamento della risorsa Ricerca Bing v7.
Risorsa multiservizio
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e l'endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Creare e inizializzare un progetto
Creare una nuova soluzione di console C# in Visual Studio.
Aggiungere il pacchetto NuGet Newtonsoft.Json.
- Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni.
- Scegliere Gestisci pacchetti NuGet.
- Cercare e selezionare Newtonsoft.Json, quindi installare il pacchetto.
Aggiungere quindi gli spazi dei nomi seguenti nel file di codice principale:
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Creare una nuova classe e aggiungere le variabili per l'endpoint API, la chiave di sottoscrizione e la query della ricerca. È possibile usare l'endpoint globale nel codice seguente o l'endpoint del sottodominio personalizzato visualizzato nel portale di Azure per la risorsa.
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"; //... } }
Inviare una richiesta e ottenere la risposta dell'API
All'interno della classe creare una funzione denominata
Search()
. All'interno di questa funzione creare un nuovo oggettoHttpClient
e aggiungere la chiave della sottoscrizione all'intestazioneOcp-Apim-Subscription-Key
.Creare l'URI per la richiesta combinando l'host e il percorso. Aggiungere quindi il proprio mercato e applicare la codifica URL alla query.
Aspettare il risultato di
client.GetAsync()
per ottenere una risposta HTTP, quindi archiviare la risposta JSON aspettando il risultato diReadAsStringAsync()
.Formattare la stringa JSON con
JsonConvert.DeserializeObject()
e stamparla nella 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); }
Nel metodo
Main()
dell'applicazione chiamare la funzioneSearch()
.static void Main(string[] args) { Search(); Console.ReadLine(); }
Risposta JSON di esempio
Viene restituita una risposta con esito positivo in formato JSON, come illustrato nell'esempio seguente:
{
"_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"
},
. . .
]
}
}