Quickstart: Procure imagens utilizando a API e C de Pesquisa de Imagem de Bing #Quickstart: Search for images using the Bing Image Search REST API and C#

Utilize este quickstart para aprender a enviar pedidos de pesquisa para a API de Pesquisa de Imagem Bing.Use this quickstart to learn how to send search requests to the Bing Image Search API. Esta aplicação C# envia uma consulta de pesquisa para a API e apresenta o URL da primeira imagem nos resultados.This C# application sends a search query to the API, and displays the URL of the first image in the results. 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.Although this application is written in C#, the API is a RESTful web service compatible with most programming languages.

O código fonte deste exemplo está disponível no GitHub com processamento de erros e anotações de código adicionais.The source code for this sample is available on GitHub with additional error handling and annotations.

Pré-requisitosPrerequisites

Criar um recurso AzureCreate an Azure resource

Comece a utilizar a API de Pesquisa de Imagem Bing criando um dos seguintes recursos Azure.Start using the Bing Image Search API by creating one of the following Azure resources.

Bing Search v7 recursoBing Search v7 resource

  • Disponível através do portal Azure até eliminar o recurso.Available through the Azure portal until you delete the resource.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.Use the free pricing tier to try the service, and upgrade later to a paid tier for production.

Recurso multi-serviçoMulti-service resource

  • Disponível através do portal Azure até eliminar o recurso.Available through the Azure portal until you delete the resource.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.Use the same key and endpoint for your applications, across multiple Cognitive Services.

Criar e inicializar um projetoCreate and initialize a project

  1. Crie uma nova solução de consola chamada BingSearchApisQuickStart em Visual Studio.Create a new console solution named BingSearchApisQuickStart in Visual Studio. Em seguida, adicione os seguintes espaços de nome ao ficheiro de código principal:Then, add the following namespaces to the main code file:

    using System;
    using System.Net;
    using System.IO;
    using System.Collections.Generic;
    using Newtonsoft.Json.Linq;
    
  2. Crie variáveis para o ponto final de API, a sua chave de subscrição e o termo de pesquisa.Create variables for the API endpoint, your subscription key, and search term. Para uriBase , pode utilizar o ponto final global no seguinte código, ou utilizar o ponto final de subdomínio personalizado apresentado no portal Azure para o seu recurso.For uriBase, you can use the global endpoint in the following code, or use the custom subdomain endpoint displayed in the Azure portal for your resource.

    //...
    namespace BingSearchApisQuickstart
    {
        class Program
        {
        // Replace the this string with your valid access key.
        const string subscriptionKey = "enter your key here";
        const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/search";
        const string searchTerm = "tropical ocean";
    //...
    

Criar uma estrutura para formatar a resposta da Pesquisa de Imagens do BingCreate a struct to format the Bing Image Search response

Defina uma SearchResult estrutura para conter os resultados da pesquisa de imagem e informações do cabeçalho JSON.Define a SearchResult struct to contain the image search results and JSON header information.

    namespace BingSearchApisQuickstart
    {
        class Program
        {
        //...
            struct SearchResult
            {
                public String jsonResult;
                public Dictionary<String, String> relevantHeaders;
            }
//...

Criar um método para enviar pedidos de pesquisaCreate a method to send search requests

Crie um método nomeado BingImageSearch para realizar a chamada para a API e desa um tipo de retorno para a estrutura criada SearchResult anteriormente.Create a method named BingImageSearch to perform the call to the API, and set the return type to the SearchResult struct created previously.

//...
namespace BingSearchApisQuickstart
{
    //...
    class Program
    {
        //...
        static SearchResult BingImageSearch(string searchTerm)
        {
        }
//...

Criar e processar um pedido de pesquisa de imagensCreate and handle an image search request

No BingImageSearch método, execute os seguintes passos:In the BingImageSearch method, perform the following steps:

  1. Construa o URI do pedido de pesquisa.Construct the URI for the search request. Formatar o SearchTerm termo de pesquisa antes de apdicê-lo à cadeia.Format the SearchTerm search term before you append it to the string.

    static SearchResult BingImageSearch(string SearchTerm){
    
        var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm);
    //...
    
  2. Envie o pedido web e obtenha a resposta como uma cadeia JSON.Send the web request and get the response as a JSON string.

    WebRequest request = WebRequest.Create(uriQuery);
    request.Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey;
    HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result;
    string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
    
  3. Crie o objeto de resultado de pesquisa e extraa os cabeçalhos Bing HTTP.Create the search result object and extract the Bing HTTP headers. Então, searchResult volte.Then, return searchResult.

    // Create the result object for return
    var searchResult = new SearchResult()
    {
        jsonResult = json,
        relevantHeaders = new Dictionary<String, String>()
    };
    
    // Extract Bing HTTP headers
    foreach (String header in response.Headers)
    {
        if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-"))
            searchResult.relevantHeaders[header] = response.Headers[header];
    }
    return searchResult;
    

Processar e ver a respostaProcess and view the response

  1. No método principal, chame BingImageSearch() e armazene a resposta devolvida.In the main method, call BingImageSearch() and store the returned response. Então, deserialize o JSON num objeto.Then, deserialize the JSON into an object.

    SearchResult result = BingImageSearch(searchTerm);
    //deserialize the JSON response from the Bing Image Search API
    dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
    
  2. Obtenha a primeira imagem devolvida de jsonObj e imprima o título e um URL para a imagem.Get the first returned image from jsonObj, and print out the title and a URL to the image.

    var firstJsonObj = jsonObj["value"][0];
    Console.WriteLine("Title for the first image result: " + firstJsonObj["name"]+"\n");
    //After running the application, copy the output URL into a browser to see the image.
    Console.WriteLine("URL for the first image result: " + firstJsonObj["webSearchUrl"]+"\n");
    

Exemplo JSON respostaExample JSON response

As respostas da API de Pesquisa de Imagens do Bing são devolvidas como JSON.Responses from the Bing Image Search API are returned as JSON. Esta resposta de amostra foi truncada para mostrar um único resultado.This sample response has been truncated to show a single result.

{
"_type":"Images",
"instrumentation":{
    "_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
    {
        "webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
        "name":"My Life in the Ocean | The greatest WordPress.com site in ...",
        "thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
        "datePublished":"2017-11-03T08:51:00.0000000Z",
        "contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
        "hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
        "contentSize":"897388 B",
        "encodingFormat":"jpeg",
        "hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
        "width":1920,
        "height":1200,
        "thumbnail":{
        "width":474,
        "height":296
        },
        "imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
        "insightsMetadata":{
        "recipeSourcesCount":0,
        "bestRepresentativeQuery":{
            "text":"Tropical Beaches Desktop Wallpaper",
            "displayText":"Tropical Beaches Desktop Wallpaper",
            "webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
        },
        "pagesIncludingCount":115,
        "availableSizesCount":44
        },
        "imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
        "accentColor":"0050B2"
    }]
}

Passos seguintesNext steps

Bing Image Search single-page app tutorial (Tutorial de aplicação de página única da Pesquisa de Imagens do Bing)Bing Image Search single-page app tutorial

Ver tambémSee also