Краткое руководство. Получение аналитических сведений об изображениях с помощью REST API визуального поиска Bing и JavaQuickstart: Get image insights using the Bing Visual Search REST API and Java

В этом кратком руководстве вы узнаете, как сделать первый вызов API Визуального поиска Bing и просмотреть результаты.Use this quickstart to make your first call to the Bing Visual Search API and view the results. Это приложение Java отправляет изображение в API и отображает возвращенные данные о нем.This Java application uploads an image to the API and displays the information it returns. Хотя это приложение создано на языке Java, API представляет собой веб-службу RESTful, совместимую с большинством языков программирования.Though this application is written in Java, the API is a RESTful Web service compatible with most programming languages.

При отправке локального изображения данные формы должны содержать заголовок Content-Disposition.When you upload a local image, the form data must include the Content-Disposition header. Вам необходимо задать для его параметра name значение "image", а для параметра filename — любую строку.You must set its name parameter to "image", and you can set the filename parameter to any string. Форма содержит двоичные данные изображения.The contents of the form include the binary data of the image. Максимально допустимый размер отправляемого изображения — 1 МБ.The maximum image size you can upload 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--

Предварительные требованияPrerequisites

Необходимо иметь учетную запись API Cognitive Services с доступом к API-интерфейсам поиска Bing.You must have a Cognitive Services API account with access to the Bing Search APIs. Вам также понадобится ключ доступа, предоставляемый после оформления подписки в ценовой категории S9, как указано на странице Цены на Cognitive Services. API-интерфейсы поиска Bing.Before continuing, you will need the access key provided after starting a subscription at S9 price tier as shown in Cognitive Services Pricing - Bing Search API.

Чтобы создать подписку на портале Azure:To start a subscription in Azure portal:

  1. Введите запрос BingSearchV7 в строке поиска с текстом Search resources, services, and docs в верхней части страницы на портале Azure.Enter 'BingSearchV7' in the text box at the top of the Azure portal that says Search resources, services, and docs.
  2. В меню Marketplace в раскрывающемся списке выберите Bing Search v7.Under Marketplace in the drop-down list, select Bing Search v7.
  3. В поле Name (Имя) введите имя нового ресурса.Enter Name for the new resource.
  4. Выберите подписку Pay-As-You-Go (Оплата по мере использования).Select Pay-As-You-Go subscription.
  5. Выберите ценовую категорию S9.Select S9 pricing tier.
  6. Щелкните Enable (Активировать), чтобы создать подписку.Click Enable to start the subscription.

Создание и инициализация проектаCreate and initialize a project

  1. Создайте проект Java в любой интегрированной среде разработки или редакторе, а затем импортируйте в него следующие библиотеки:Create a new Java project in your favorite IDE or editor, and import the following libraries:

    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;
    
  2. Создайте переменные для конечной точки API, ключ подписки и путь к изображению:Create variables for your API endpoint, subscription key, and the path to your image:

    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";
    

Создание средства синтаксического анализа JSONCreate the JSON parser

Создайте метод, чтобы сделать ответ JSON от API более удобным для чтения с помощью JsonParser:Create a method to make the JSON response from the API more readable using JsonParser:

```java
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);
    }
```

Создание поискового запроса и запросаConstruct the search request and query

  1. В методе main приложения создайте клиент HTTP с помощью HttpClientBuilder.create().build();:In the main method of your application, create an HTTP client using HttpClientBuilder.create().build();:

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    
  2. Создайте объект HttpEntity для отправки изображения в API:Create an HttpEntity object to upload your image to the API:

    HttpEntity entity = MultipartEntityBuilder
        .create()
        .addBinaryBody("image", new File(imagePath))
        .build();
    
  3. Создайте объект httpPost с конечной точкой и задайте заголовок, чтобы использовать ключ подписки:Create an httpPost object with your endpoint, and set the header to use your subscription key:

    HttpPost httpPost = new HttpPost(endpoint);
    httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
    httpPost.setEntity(entity);
    

Получение и обработка ответа в формате JSONReceive and process the JSON response

  1. Используйте метод HttpClient.execute() для отправки запроса в API и сохраните ответ в объекте InputStream.Use the HttpClient.execute() method to send a request to the API, and store the response in an InputStream object:

    HttpResponse response = httpClient.execute(httpPost);
    InputStream stream = response.getEntity().getContent();
    
  2. Сохраните строку JSON и выведите ответ.Store the JSON string, and print the response:

String json = new Scanner(stream).useDelimiter("\\A").next();
System.out.println("\nJSON Response:\n");
System.out.println(prettify(json));

Дополнительная информацияNext steps

Build a Visual Search single-page web app (Создание одностраничного веб-приложения Визуального поиска)Build a Visual Search single-page web app