Szybki start: uzyskiwanie szczegółowych informacji o obrazach przy użyciu interfejsu API REST wyszukiwania wizualnego Bing i języka Java
Ostrzeżenie
30 października 2020 r. interfejsy API wyszukiwania Bing zostały przeniesione z usług Azure AI do usług wyszukiwania Bing. Ta dokumentacja jest udostępniana tylko do celów referencyjnych. Aby uzyskać zaktualizowaną dokumentację, zobacz dokumentację interfejsu API wyszukiwania Bing. Aby uzyskać instrukcje dotyczące tworzenia nowych zasobów platformy Azure na potrzeby wyszukiwania Bing, zobacz Tworzenie zasobu wyszukiwania Bing za pośrednictwem witryny Azure Marketplace.
Użyj tego przewodnika szybkiego startu, aby wykonać pierwsze wywołanie interfejsu API wyszukiwania wizualnego Bing. Ta aplikacja Java przekazuje obraz do interfejsu API i wyświetla zwracane informacje. Mimo że ta aplikacja jest napisana w języku Java, interfejs API jest usługą internetową zgodną ze standardem RESTful z większością języków programowania.
Wymagania wstępne
- Zestaw Java Development Kit (JDK) 7 lub 8
- Biblioteka języka Java języka Gson
- Apache HttpComponents
Tworzenie zasobu platformy Azure
Rozpocznij korzystanie z interfejsu API wyszukiwania wizualnego Bing, tworząc jeden z następujących zasobów platformy Azure:
zasób wyszukiwania Bing wersji 7
- Dostępne za pośrednictwem witryny Azure Portal do momentu usunięcia zasobu.
- Wybierz warstwę cenową
S9
.
- Dostępne za pośrednictwem witryny Azure Portal do momentu usunięcia zasobu.
- Użyj tego samego klucza i punktu końcowego dla aplikacji w wielu usługach azure AI.
Tworzenie i inicjowanie projektu
Utwórz nowy projekt Java w ulubionym środowisku IDE lub edytorze i zaimportuj następujące biblioteki:
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;
Utwórz zmienne dla punktu końcowego interfejsu API, klucza subskrypcji i ścieżki do obrazu. Dla wartości
endpoint
możesz użyć globalnego punktu końcowego w poniższym kodzie lub skorzystać z punktu końcowego niestandardowej poddomeny wyświetlanego w portalu Azure dla twojego zasobu.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";
Podczas przesyłania lokalnego obrazu dane formularza muszą zawierać nagłówek
Content-Disposition
. Ustaw parametrname
na wartość "image" i ustaw parametrfilename
na nazwę pliku obrazu. Zawartość formularza zawiera dane binarne obrazu. Maksymalny rozmiar obrazu, który można przekazać, to 1 MB.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
Tworzenie analizatora JSON
Utwórz metodę, aby uczynić odpowiedź JSON z interfejsu API bardziej czytelną, używając 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);
}
Konstruowanie żądania wyszukiwania i zapytania
W głównej metodzie aplikacji utwórz klienta HTTP przy użyciu
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Utwórz obiekt
HttpEntity
, aby przekazać obraz do interfejsu API.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
Utwórz obiekt
httpPost
z podanym punktem końcowym i skonfiguruj nagłówek, aby korzystał z twojego klucza subskrypcji.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
Odbieranie i przetwarzanie odpowiedzi JSON
Użyj metody
HttpClient.execute()
, aby wysłać żądanie do interfejsu API i zapisać odpowiedź w obiekcieInputStream
.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
Zapisz ciąg JSON i wyświetl odpowiedź.
String json = new Scanner(stream).useDelimiter("\\A").next(); System.out.println("\nJSON Response:\n"); System.out.println(prettify(json));