Snabbstart: Sök efter avbildningar med API för bildsökning i Bing, en Azure-tjänst för inlärningQuickstart: Search for images with the Bing Image Search API, an Azure cognitive service

Använd den här snabb starten för att skicka Sök begär anden till API för bildsökning i Bing i Azure Cognitive Services.Use this quickstart to send search requests to the Bing Image Search API in Azure Cognitive Services. Java-programmet skickar en sökfråga till API:et och visar webbadressen till den första bilden i resultatet.This Java application sends a search query to the API, and displays the URL of the first image in the results. Även om det här programmet är skrivet i Java, är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.While this application is written in Java, the API is a RESTful web service compatible with most programming languages.

Källkoden för det här exemplet finns på GitHub tillsammans med ytterligare felhantering och kommentarer.The source code for this sample is available on GitHub with additional error handling and annotations.

FörutsättningarPrerequisites

Du måste ha ett Cognitive Services-API-konto med åtkomst till API:er för Bing-sökresultat.You must have a Cognitive Services API account with access to the Bing Search APIs. Om du inte har någon Azure-prenumeration kan du skapa ett konto kostnadsfritt.If you don't have an Azure subscription, you can create an account for free. Innan du fortsätter behöver du den åtkomstnyckel som du fick när du aktiverade din kostnadsfria utvärderingsversion eller en betald prenumerationsnyckel från instrumentpanelen i Azure.Before continuing, You will need the access key provided after activating your free trial, or a paid subscription key from your Azure dashboard.

Skapa och initiera ett projektCreate and initialize a project

  1. Skapa ett nytt Java-projekt i valfri IDE eller redigeringsprogram och importera följande bibliotek.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. Skapa variabler för API-slutpunkter, din prenumerationsnyckel och sökvillkor.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";
    

Konstruera sökbegäran och frågaConstruct the search request and query

  1. Använd variablerna från det sista steget för att formatera en sök-URL för API-begäran.Use the variables from the last step to format a search URL for the API request. Sökordet måste vara URL-kodat innan det läggs till i begäran.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);
    

Ta emot och bearbeta JSON-svaretReceive and process the JSON response

  1. Ta emot JSON-svar från API för bildsökning i Bing och konstruera resultatobjektet.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. Separera de Bing-relaterade HTTP-huvudena från JSON-textenSeparate 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. Stäng dataströmmen och parsa svaret.Close the stream, and parse the response. Hämta det totala antalet returnerade sökresultat och miniatyr-URL:en till det första avbildningsresultatet.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();
    

Exempel på JSON-svarExample JSON response

Svar från API för bildsökning i Bing returneras som JSON.Responses from the Bing Image Search API are returned as JSON. Det här exempelsvaret har trunkerats för att visa ett enskilt resultat.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"
    }]
}

Nästa stegNext steps

Se ocksåSee also