Início Rápido: Enviar uma solicitação de pesquisa para a API REST da Pesquisa de Entidade do Bing usando o C#
Aviso
Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram migradas dos serviços de IA do Azure para os Serviços de Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter a documentação atualizada, consulte 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, consulte Criar um recurso de Pesquisa do Bing por meio do Azure Marketplace.
Use este início rápido para fazer sua primeira chamada à API de Pesquisa de Entidade do Bing e exibir a resposta JSON. Este aplicativo C# simples envia uma consulta de pesquisa de notícias para a API e exibe a resposta. O código-fonte desse aplicativo está disponível no GitHub.
Embora esse aplicativo seja escrito 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.
- Ou, se você estiver usando o Linux ou o MacOS, poderá seguir este início rápido usando o Visual Studio Code e o .NET Core
- Conta gratuita do Azure
Criar um recurso do Azure
Comece a usar a API de Pesquisa de Entidade do Bing criando um dos recursos do Azure a seguir.
Recurso de Pesquisa de Entidade do Bing
- Disponível por meio do portal do Azure até que você exclua o recurso.
- Use o tipo de preço gratuito para experimentar o serviço e atualize mais tarde para uma camada paga para produção.
- A Pesquisa de Entidade do Bing também é oferecida em camadas pagas do recurso Pesquisa do Bing v7.
Recurso de vários serviços
- Disponível por meio do portal do Azure até que você exclua o recurso.
- Use a mesma chave e ponto de extremidade para seus aplicativos nos vários serviços de IA do Azure.
Criar e inicializar um projeto
Crie uma solução de console C# no Visual Studio.
Adicione o pacote NuGet Newtonsoft.Json.
- Clique com o botão direito do mouse no projeto no Gerenciador de Soluções.
- Selecione Gerenciar Pacotes NuGet.
- Pesquise e selecione Newtonsoft.Json e, em seguida, instale o pacote.
Então, adicione os seguintes namespaces no arquivo de código principal:
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Crie uma classe e adicione variáveis para o ponto de extremidade da API, sua chave de assinatura e a consulta que você deseja pesquisar. É possível usar o ponto de extremidade global no código a seguir ou o ponto de extremidade do subdomínio personalizado exibido no portal do Azure para seu 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 uma solicitação e obter a resposta da API
Na classe, crie uma função chamada
Search()
. Dentro desta função, crie um objetoHttpClient
e adicione a chave de assinatura ao cabeçalhoOcp-Apim-Subscription-Key
.Construa o URI da sua solicitação combinando o host e o caminho. Em seguida, adicione o mercado e codifique a consulta como URL.
Aguarde
client.GetAsync()
para obter uma resposta HTTP e, em seguida, armazene a resposta JSON aguardandoReadAsStringAsync()
.Formate a cadeia de caracteres JSON com
JsonConvert.DeserializeObject()
e imprima-a no 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); }
No método
Main()
do aplicativo, chame a funçãoSearch()
.static void Main(string[] args) { Search(); Console.ReadLine(); }
Resposta JSON de exemplo
Uma resposta com êxito é retornada em JSON, conforme mostrado no seguinte exemplo:
{
"_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"
},
. . .
]
}
}