Guida introduttiva: Cercare immagini con l'API Ricerca immagini Bing, un servizio cognitivo di AzureQuickstart: Search for images with the Bing Image Search API, an Azure cognitive service

Usare questo argomento di avvio rapido per inviare richieste di ricerca all'API Ricerca immagini Bing in Servizi cognitivi di Azure.Use this quickstart to send search requests to the Bing Image Search API in Azure Cognitive Services. Questa applicazione Java invia una query di ricerca all'API e visualizza l'URL della prima immagine inclusa nei risultati.This Java application sends a search query to the API, and displays the URL of the first image in the results. L'applicazione è scritta in Java, ma l'API è un servizio Web RESTful compatibile con la maggior parte dei linguaggi di programmazione.While this application is written in Java, 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 un nuovo progetto Java nell'ambiente di sviluppo integrato o nell'editor preferito e importare le librerie seguenti.Create a new Java project in your favorite IDE or editor, and import the following libraries.

    import java.net.*;
    import java.util.*;
    import java.io.*;
    import javax.net.ssl.HttpsURLConnection;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    
  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.

    static String subscriptionKey = "enter key here";
    static String host = "https://api.cognitive.microsoft.com";
    static String path = "/bing/v7.0/images/search";
    static String searchTerm = "tropical ocean";
    

Costruire la richiesta di ricerca e la queryConstruct the search request and query

  1. Usare le variabili del passaggio precedente per formattare un URL di ricerca per la richiesta API.Use the variables from the last step to format a search URL for the API request. Il termine di ricerca deve essere codificato con URL prima di poter essere aggiunto alla richiesta.The search term must be URL-encoded before being appended to the request.

    // construct the search request URL (in the form of endpoint + query string)
    URL url = new URL(host + path + "?q=" +  URLEncoder.encode(searchQuery, "UTF-8"));
    HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
    connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey);
    

Ricevere ed elaborare la risposta JSONReceive and process the JSON response

  1. Ricevere la risposta JSON dall'API Ricerca immagini Bing e costruire l'oggetto risultato.Receive the JSON response from the Bing Image Search API, and construct the result object.

    // receive JSON body
    InputStream stream = connection.getInputStream();
    String response = new Scanner(stream).useDelimiter("\\A").next();
    // construct result object for return
    SearchResults results = new SearchResults(new HashMap<String, String>(), response);
    
  2. Separare le intestazioni HTTP correlate a Bing dal corpo JSONSeparate the Bing-related HTTP headers from the JSON body

    // extract Bing-related HTTP headers
    Map<String, List<String>> headers = connection.getHeaderFields();
    for (String header : headers.keySet()) {
        if (header == null) continue;      // may have null key
        if (header.startsWith("BingAPIs-") || header.startsWith("X-MSEdge-")) {
            results.relevantHeaders.put(header, headers.get(header).get(0));
        }
    }
    
  3. Chiudere il flusso e analizzare la risposta.Close the stream, and parse the response. Ottenere il numero totale di risultati della ricerca restituiti e l'URL di anteprima della prima immagine dei risultati.Get the total number of returned search results, and the thumbnail url to the first image result.

    stream.close();
    JsonParser parser = new JsonParser();
    JsonObject json = parser.parse(result.jsonResponse).getAsJsonObject();
    //get the first image result from the JSON object, along with the total
    //number of images returned by the Bing Image Search API.
    String total = json.get("totalEstimatedMatches").getAsString();
    JsonArray results = json.getAsJsonArray("value");
    JsonObject first_result = (JsonObject)results.get(0);
    String resultURL = first_result.get("thumbnailUrl").getAsString();
    

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