Rövid útmutató: Képelemzések lekérése a Bing Visual Search REST API és a Java használatával
Figyelmeztetés
2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search Servicesbe. Ez a dokumentáció csak referenciaként szolgál. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos útmutatásért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.
Ezzel a rövid útmutatóval kezdeményezheti első hívását a Bing Visual Search API-hoz. Ez a Java-alkalmazás feltölt egy képet az API-ba, és megjeleníti a visszaadott információkat. Bár ez az alkalmazás Java nyelven van megírva, az API egy RESTful webszolgáltatás, amely kompatibilis a legtöbb programozási nyelvvel.
Előfeltételek
Azure-erőforrás létrehozása
Kezdje el használni a Bing Visual Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Válassza ki a tarifacsomagot
S9
.
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.
Projekt létrehozása és inicializálása
Hozzon létre egy új Java-projektet a kedvenc IDE-jében vagy szerkesztőjében, és importálja a következő kódtárakat:
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;
Hozzon létre változókat az API-végponthoz, az előfizetési kulcshoz és a rendszerkép elérési útjához.
endpoint
Az értékhez használhatja a globális végpontot az alábbi kódban, vagy használhatja az erőforráshoz tartozó Azure Portal megjelenő egyéni altartományvégpontot.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";
Helyi kép feltöltésekor az űrlapadatoknak tartalmazniuk kell a fejlécet
Content-Disposition
. Állítsa a paramétertname
"image" értékre, és állítsa afilename
paramétert a kép fájlnevére. Az űrlap tartalma tartalmazza a kép bináris adatait. A feltölthető maximális képméret 1 MB.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
A JSON-elemző létrehozása
Hozzon létre egy metódust, amellyel olvashatóbbá teheti az API-ból érkező JSON-választ a használatával JsonParser
.
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);
}
A keresési kérelem és a lekérdezés összeállítása
Az alkalmazás fő metódusában hozzon létre egy HTTP-ügyfelet a használatával
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Hozzon létre egy objektumot
HttpEntity
, amellyel feltöltheti a képet az API-ba.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
Hozzon létre egy
httpPost
objektumot a végponttal, és állítsa be a fejlécet az előfizetési kulcs használatára.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
A JSON-válasz fogadása és feldolgozása
HttpClient.execute()
A metódussal kérést küldhet az API-nak, és tárolhatja a választ egyInputStream
objektumban.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
Tárolja a JSON-sztringet, és nyomtassa ki a választ.
String json = new Scanner(stream).useDelimiter("\\A").next(); System.out.println("\nJSON Response:\n"); System.out.println(prettify(json));