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:
- Tillgänglig via Azure Portal tills du tar bort resursen.
-
S9
Välj prisnivå.
- 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
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;
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";
När du laddar upp en lokal bild måste formulärdata innehålla
Content-Disposition
rubriken. Ställ in parameternname
på "image" och ange parameternfilename
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 JsonParser
av .
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
I huvudmetoden för ditt program skapar du en HTTP-klient med hjälp av
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Skapa ett
HttpEntity
objekt för att ladda upp avbildningen till API:et.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
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
HttpClient.execute()
Använd metoden för att skicka en begäran till API:et och lagra svaret i ettInputStream
-objekt.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
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));