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 Wyszukiwanie Bing zostały przeniesione z usług Azure AI do usług Wyszukiwanie Bing Services. Ta dokumentacja jest dostarczana 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 Wyszukiwanie Bing za pomocą Azure Marketplace.
Użyj tego przewodnika Szybki start, aby wykonać pierwsze wywołanie interfejsu API wyszukiwania wizualnego Bing. Ta aplikacja Java przekazuje obraz do interfejsu API i wyświetla informacje, które zwraca. Mimo że ta aplikacja jest napisana w języku Java, interfejs API jest usługą internetową RESTful zgodną z większością języków programowania.
Wymagania wstępne
- Zestaw Java Development Kit (JDK) 7 lub 8
- Biblioteka języka Java w formacie Gson
- Apache HttpComponents
Tworzenie zasobu platformy Azure
Zacznij korzystać z interfejsu API wyszukiwania wizualnego Bing, tworząc jeden z następujących zasobów platformy Azure:
zasób Wyszukiwanie Bing w wersji 7
- Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
- Wybierz warstwę cenową
S9
.
- Dostępne za pośrednictwem 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, klucz subskrypcji oraz ścieżkę obrazu.
endpoint
Dla wartości można użyć globalnego punktu końcowego w poniższym kodzie lub użyć niestandardowego punktu końcowego poddomeny wyświetlanego w Azure Portal dla 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";
Po przekazaniu obrazu lokalnego dane formularza muszą zawierać
Content-Disposition
nagłówek. Ustaw parametrname
na "image" i ustawfilename
parametr 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 składni JSON
Utwórz metodę, aby odpowiedź JSON z interfejsu API był bardziej czytelna przy użyciu polecenia 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 zapytania i żądania wyszukiwania
W głównej metodzie aplikacji utwórz klienta HTTP przy użyciu polecenia
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpEntity
Utwórz obiekt, aby przekazać obraz do interfejsu API.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
httpPost
Utwórz obiekt z punktem końcowym i ustaw nagłówek tak, aby używał klucza subskrypcji.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
Odbieranie i przetwarzanie odpowiedzi w formacie JSON
HttpClient.execute()
Użyj metody , aby wysłać żądanie do interfejsu API i zapisać odpowiedź wInputStream
obiekcie.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));