Início Rápido: Enviar um pedido de pesquisa para a API REST de Pesquisa de Entidades do Bing com C#
Aviso
A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a pesquisa do Bing, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.
Utilize este início rápido para fazer a sua primeira chamada à API de Pesquisa de Entidades do Bing e ver a resposta JSON. Esta aplicação C# simples envia uma consulta de pesquisa de notícias para a API e apresenta a resposta. O código fonte para esta aplicação está disponível no GitHub.
Embora esta aplicação esteja escrita em C#, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.
Pré-requisitos
- Qualquer edição do Visual Studio 2017 ou posterior.
- Em alternativa, se estiver a utilizar o Linux ou MacOS, pode seguir este início rápido com o Visual Studio Code e o .NET Core
- Conta gratuita do Azure
Criar um recurso do Azure
Comece a utilizar a API de Pesquisa de Entidades do Bing ao criar um dos seguintes recursos do Azure.
Recurso de Pesquisa de Entidades do Bing
- Disponível através do portal do Azure até eliminar o recurso.
- Utilize o escalão de preço gratuito para experimentar o serviço e atualize mais tarde para um escalão pago para produção.
- A Pesquisa de Entidades do Bing também é disponibilizada em escalões pagos do recurso Pesquisa do Bing v7.
Recurso multi-serviço
- Disponível através do portal do Azure até eliminar o recurso.
- Utilize a mesma chave e ponto final para as suas aplicações, em vários serviços de IA do Azure.
Criar e inicializar um projeto
Crie uma nova solução de consola C# no Visual Studio.
Adicione o pacote NuGet Newtonsoft.Json .
- Clique com o botão direito do rato no projeto no Explorador de Soluções.
- Selecione Gerir Pacotes NuGet.
- Procure e selecione Newtonsoft.Json e, em seguida, instale o pacote.
Em seguida, adicione os seguintes espaços de nomes ao ficheiro de código principal:
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Crie uma nova classe e adicione variáveis para o ponto final da API, a chave de subscrição e a consulta que pretende procurar. Pode utilizar o ponto final global no seguinte código ou utilizar o ponto final de subdomínio personalizado apresentado no portal do Azure do recurso.
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"; //... } }
Enviar um pedido e obter a resposta da API
Na classe , crie uma função chamada
Search()
. Nesta função, crie um novoHttpClient
objeto e adicione a chave de subscrição aoOcp-Apim-Subscription-Key
cabeçalho.Construa o URI para o seu pedido ao combinar o anfitrião e o caminho. Em seguida, adicione o mercado e a codificação de URL da consulta.
Aguarde
client.GetAsync()
para obter uma resposta HTTP e, em seguida, armazene a resposta JSON aguardandoReadAsStringAsync()
.Formate a cadeia JSON com
JsonConvert.DeserializeObject()
e imprima-a na consola do .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); }
No método da sua aplicação
Main()
, chame aSearch()
função .static void Main(string[] args) { Search(); Console.ReadLine(); }
Resposta JSON de exemplo
É devolvida uma resposta com êxito em JSON, tal como é apresentado no exemplo seguinte:
{
"_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"
},
. . .
]
}
}