Avvio rapido: Cercare immagini con l'API REST Ricerca immagini Bing e C#Quickstart: Search for images using the Bing Image Search REST API and C#

Usare questa guida introduttiva per iniziare a inviare richieste di ricerca all'API Ricerca immagini Bing.Use this quickstart to start sending search requests to the Bing Image Search API. Questa applicazione C# invia una query di ricerca all'API e visualizza l'URL della prima immagine inclusa nei risultati.This C# application sends a search query to the API, and displays the URL of the first image in the results. L'applicazione è scritta in C#, ma l'API è un servizio Web RESTful compatibile con la maggior parte dei linguaggi di programmazione.While this application is written in C#, the API is a RESTful web service compatible with most programming languages.

Il codice sorgente per questo esempio è disponibile in GitHub con annotazioni aggiuntive e altre informazioni sulla gestione degli errori.The source code for this sample is available on GitHub with additional error handling and annotations.

PrerequisitiPrerequisites

È necessario avere un account delle API Servizi cognitivi con accesso alle API di ricerca Bing.You must have a Cognitive Services API account with access to the Bing Search APIs. Se non si ha una sottoscrizione di Azure, è possibile creare un account gratuito.If you don't have an Azure subscription, you can create an account for free. Prima di continuare, è necessaria la chiave di accesso fornita dopo l'attivazione della versione di valutazione gratuita oppure è possibile usare una chiave di sottoscrizione a pagamento dal dashboard di Azure.Before continuing, You will need the access key provided after activating your free trial, or a paid subscription key from your Azure dashboard.

Creare e inizializzare un progettoCreate and initialize a project

  1. Creare una nuova soluzione console denominata BingSearchApisQuickStart in Visual Studio.create a new console solution named BingSearchApisQuickStart in Visual Studio. Aggiungere quindi gli spazi dei nomi seguenti nel file di codice principale.Then add the following namespaces into the main code file.

    using System;
    using System.Net;
    using System.IO;
    using System.Collections.Generic;
    using Newtonsoft.Json.Linq;
    
  2. Creare variabili per l'endpoint dell'API, la chiave di sottoscrizione e il termine di ricerca.Create variables for the API endpoint, your subscription key, and search term.

    //...
    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";
    //...
    

Creare uno struct per formattare la risposta di Ricerca immagini BingCreate a struct to format the Bing Image Search response

Definire uno struct SearchResult in cui saranno contenuti i risultati della ricerca di immagini e le informazioni dell'intestazione 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;
            }
//...

Creare un metodo per l'invio di richieste di ricercaCreate a method to send search requests

Creare un metodo denominato BingImageSearch per eseguire la chiamata all'API e impostare il tipo restituito nello struct SearchResult creato in precedenza.Create a method named BingImageSearch to perform the call to the API, and set the return type to the SearchResult struct created earlier.

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

Creare e gestire una richiesta di ricerca di immaginiCreate and handle an image search request

Nel metodo BingImageSearch eseguire i passaggi seguenti.In the BingImageSearch method, perform the following steps.

  1. Costruire l'URI per la richiesta di ricerca.Construct the URI for the search request. Il termine di ricerca SearchTerm deve essere formattato prima di poter essere aggiunto alla stringa.The search term SearchTerm must be formatted before being appended to the string.

    static SearchResult BingImageSearch(string SearchTerm){
    
        var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm);
    //...
    
  2. Inviare la richiesta Web e ottenere la risposta come stringa 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. Creare l'oggetto risultato di ricerca ed estrarre le intestazioni HTTP di Bing.Create the search result object, and extract the Bing HTTP headers. Restituire quindi searchResult.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;
    

Elaborare e visualizzare la rispostaProcess and view the response

  1. Nel metodo principale chiamare BingImageSearch() e memorizzare la risposta restituita.In the main method, call BingImageSearch() and store the returned response. Deserializzare quindi la risposta JSON in un oggetto.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. Ottenere la prima immagine restituita da jsonObj e stampare il titolo e un URL nell'immagine.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");
    

Risposta JSON di esempioExample JSON response

Le risposte dell'API Ricerca immagini Bing vengono restituite in formato JSON.Responses from the Bing Image Search API are returned as JSON. Questa risposta di esempio è stata troncata in modo da visualizzare un singolo risultato.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"
    }]
}

Passaggi successiviNext steps

Vedere ancheSee also