Snabbstart: Hämta bildinsikter med hjälp av REST API för visuell sökning i Bing och Java

Varning

Den 30 oktober 2020 flyttades Bing-sökning-API:erna från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.

Använd den här snabbstarten för att göra ditt första anrop till API:et för visuell sökning i Bing. Det här Java-programmet laddar upp en bild till API:et och visar den information som returneras. Ä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.

Förutsättningar

Skapa en Azure-resurs

Börja använda API:et för visuell sökning i Bing genom att skapa någon av följande Azure-resurser:

Bing-sökning v7-resurs

  • Tillgänglig via Azure Portal tills du tar bort resursen.
  • S9 Välj prisnivå.

Resurs för flera tjänster

  • Tillgänglig via Azure Portal tills du tar bort resursen.
  • Använd samma nyckel och slutpunkt för dina program i flera Azure AI-tjänster.

Skapa och initiera ett projekt

  1. Skapa ett nytt Java-projekt i valfri IDE eller redigeringsprogram och importera följande bibliotek:

    import java.util.*;
    import java.io.*;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    
    // HttpClient libraries
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.mime.MultipartEntityBuilder;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    
  2. Skapa variabler för din API-slutpunkt, prenumerationsnyckel och sökvägen till din bild. För värdet endpoint kan du använda den globala slutpunkten i följande kod eller använda den anpassade underdomänslutpunkten som visas i Azure Portal för din resurs.

    static String endpoint = "https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch";
    static String subscriptionKey = "your-key-here";
    static String imagePath = "path-to-your-image";
    
  3. När du laddar upp en lokal bild måste formulärdata innehålla Content-Disposition rubriken. Ställ in parametern name på "image" och ange parametern filename till bildens filnamn. Innehållet i formuläret innehåller bildens binära data. Den maximala bildstorleken som du kan ladda upp är 1 MB.

    --boundary_1234-abcd
    Content-Disposition: form-data; name="image"; filename="myimagefile.jpg"
    
    ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦...
    
    --boundary_1234-abcd--
    

Skapa JSON-parsern

Skapa en metod för att göra JSON-svaret från API:et mer lättläst med hjälp JsonParserav .

public static String prettify(String json_text) {
        JsonParser parser = new JsonParser();
        JsonObject json = parser.parse(json_text).getAsJsonObject();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(json);
    }

Konstruera sökbegäran och fråga

  1. I huvudmetoden för ditt program skapar du en HTTP-klient med hjälp av HttpClientBuilder.create().build();.

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    
  2. Skapa ett HttpEntity objekt för att ladda upp avbildningen till API:et.

    HttpEntity entity = MultipartEntityBuilder
        .create()
        .addBinaryBody("image", new File(imagePath))
        .build();
    
  3. Skapa ett httpPost objekt med slutpunkten och ange att rubriken ska använda din prenumerationsnyckel.

    HttpPost httpPost = new HttpPost(endpoint);
    httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
    httpPost.setEntity(entity);
    

Ta emot och bearbeta JSON-svaret

  1. HttpClient.execute() Använd metoden för att skicka en begäran till API:et och lagra svaret i ett InputStream -objekt.

    HttpResponse response = httpClient.execute(httpPost);
    InputStream stream = response.getEntity().getContent();
    
  2. Lagra JSON-strängen och skriv ut svaret.

    String json = new Scanner(stream).useDelimiter("\\A").next();
    System.out.println("\nJSON Response:\n");
    System.out.println(prettify(json));
    

Nästa steg