Краткое руководство. Получение аналитических сведений об изображениях с помощью REST API визуального поиска Bing и Java
Предупреждение
30 октября 2020 г. API Поиск Bing перенесены из служб ИИ Azure в Поиск Bing Services. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.
Используйте это краткое руководство, чтобы выполнить вызов к API "Визуальный поиск Bing". Это приложение Java отправляет изображение в API и отображает возвращенные данные о нем. Это приложение создано на языке Java. Но API представляет собой веб-службу RESTful, совместимую с большинством языков программирования.
Предварительные требования
Создание ресурса Azure
Чтобы начать работу с API Визуального поиска Bing, создайте один из следующих ресурсов Azure.
- доступен на портале Azure до удаления.
- Выберите ценовую категорию
S9
.
- доступен на портале Azure до удаления.
- Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Создание и инициализация проекта
Создайте проект Java в любой интегрированной среде разработки или редакторе, а затем импортируйте в него следующие библиотеки:
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;
Создайте переменные для конечной точки API, ключ подписки и путь к изображению. Для значения
endpoint
вы можете использовать глобальную конечную точку, указанную в коде ниже, или конечную точку личного поддомена, которая отображается на портале Azure для вашего ресурса.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";
При отправке локального изображения данные формы должны содержать заголовок
Content-Disposition
. Задайте для его параметраname
значение "image", а для параметраfilename
имя файла с изображением. Форма содержит двоичные данные изображения. Максимально допустимый размер отправляемого изображения — 1 МБ.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
Создание средства синтаксического анализа JSON
Создайте метод, чтобы сделать ответ JSON от API более удобным для чтения с помощью 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);
}
Создание поискового запроса и запроса
В методе main приложения создайте клиент HTTP с помощью
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Создайте объект
HttpEntity
для отправки изображения в API.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
Создайте объект
httpPost
с конечной точкой и задайте заголовок, чтобы использовать ключ подписки.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
Получение и обработка ответа в формате JSON
Используйте метод
HttpClient.execute()
для отправки запроса в API и сохраните ответ в объектеInputStream
.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
Сохраните строку JSON и выведите ответ.
String json = new Scanner(stream).useDelimiter("\\A").next(); System.out.println("\nJSON Response:\n"); System.out.println(prettify(json));
Дальнейшие действия
Build a Visual Search single-page web app (Создание одностраничного веб-приложения Визуального поиска)