Share via


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

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

  1. Crie uma nova solução de consola C# no Visual Studio.

  2. Adicione o pacote NuGet Newtonsoft.Json .

    1. Clique com o botão direito do rato no projeto no Explorador de Soluções.
    2. Selecione Gerir Pacotes NuGet.
    3. Procure e selecione Newtonsoft.Json e, em seguida, instale o pacote.
  3. 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;
    
  4. 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

  1. Na classe , crie uma função chamada Search(). Nesta função, crie um novo HttpClient objeto e adicione a chave de subscrição ao Ocp-Apim-Subscription-Key cabeçalho.

  2. 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.

  3. Aguarde client.GetAsync() para obter uma resposta HTTP e, em seguida, armazene a resposta JSON aguardando ReadAsStringAsync().

  4. 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);
    }
    
  5. No método da sua aplicação Main() , chame a Search() 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"
      },
      
      . . .
    ]
  }
}

Passos seguintes