Quickstart: Afbeeldingsinzichten krijgen met behulp van de Bing Visual Search REST-API en Java
Waarschuwing
Op 30 oktober 2020 zijn de Zoeken in Bing API's verplaatst van Azure AI-services naar Zoeken in Bing Services. Deze documentatie is alleen bedoeld ter referentie. Zie de bing zoek-API-documentatie voor bijgewerkte documentatie. Zie Een Zoeken in Bing resource maken via de Azure Marketplace voor instructies voor het maken van nieuwe Azure-resources voor Bing Search.
Gebruik deze quickstart om uw eerste aanroep naar de Bing Visual Search-API te maken. Met deze Java-toepassing wordt er een afbeelding naar de API geüpload, waarna de geretourneerde gegevens worden weergegeven. Hoewel deze toepassing in Java is geschreven, is de API een RESTful-webservice die compatibel is met vrijwel elke programmeertaal.
Vereisten
Een Azure-resource maken
Begin met het gebruik van de Bing Visual Search-API door een van de volgende Azure-resources te maken:
- Beschikbaar via de Azure-portal totdat u de resource verwijdert.
- Controleer de prijscategorie
S9
.
Resource met meerdere services
- Beschikbaar via de Azure-portal totdat u de resource verwijdert.
- Gebruik dezelfde sleutel en hetzelfde eindpunt voor uw toepassingen, in meerdere Azure AI-services.
Een project maken en initialiseren
Maak een nieuw Java-project in uw favoriete IDE of editor en importeer de volgende bibliotheken:
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;
Maak variabelen voor uw API-eindpunt, abonnementssleutel en het pad naar uw afbeelding. Voor de
endpoint
-waarde kunt u het globale eindpunt in de volgende code gebruiken of het eindpunt voor het aangepaste subdomein gebruiken dat voor uw resource wordt weergegeven in de Azure-portal.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";
Wanneer u een lokale afbeelding uploadt, moeten de formuliergegevens de header
Content-Disposition
bevatten. Stel dename
-parameter in op ‘afbeelding’ en stel defilename
-parameter in op de bestandsnaam van de afbeelding. De inhoud van het formulier bevat de binaire gegevens van de afbeelding. De maximale afbeeldingsgrootte die u kunt uploaden is 1 MB.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
De JSON-parser maken
Maak een methode om het JSON-antwoord van de API beter leesbaar te maken door JsonParser
te gebruiken.
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);
}
De zoekopdracht en query compileren
Maak in de Main-methode van uw toepassing een HTTP-client met behulp van
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Maak een
HttpEntity
-object om uw afbeelding te uploaden naar de API.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
Maak een
httpPost
-object met uw eindpunt en stel de header in voor gebruik van uw abonnementssleutel.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
Het JSON-antwoord ontvangen en verwerken
Gebruik de
HttpClient.execute()
-methode om een aanvraag te verzenden naar de API en sla het antwoord op in eenInputStream
-object.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
Sla de JSON-tekenreeks op en druk het antwoord af.
String json = new Scanner(stream).useDelimiter("\\A").next(); System.out.println("\nJSON Response:\n"); System.out.println(prettify(json));