Mulai cepat: Dapatkan insight gambar menggunakan REST API Pencarian Kontrol Bing dan Java

Peringatan

Pada 30 Oktober 2020, API Bing Search dipindahkan dari layanan Azure AI ke Bing Search Services. Dokumentasi ini disediakan hanya untuk referensi. Untuk dokumentasi terbaru, lihat dokumentasi Bing Search API. Untuk petunjuk tentang cara membuat sumber daya Azure baru untuk pencarian Bing, lihat Membuat sumber daya Pencarian Bing melalui Marketplace Azure.

Gunakan mulai cepat ini untuk melakukan panggilan pertama Anda ke Bing Visual Search API. Aplikasi Java ini mengunggah gambar ke API dan menampilkan informasi yang dikembalikannya. Meskipun aplikasi ini ditulis dalam Java, API adalah layanan Web RESTful yang kompatibel dengan sebagian besar bahasa pemrograman.

Prasyarat

Membuat grup sumber daya Azure

Mulai gunakan Bing Visual Search API dengan membuat salah satu sumber daya Azure berikut:

Sumber daya Bing Search v7

  • Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
  • Pilih tingkat harga S9.

Sumber daya multi-layanan

  • Tersedia melalui portal Microsoft Azure hingga Anda menghapus sumber daya.
  • Gunakan kunci dan titik akhir yang sama untuk aplikasi Anda, di beberapa layanan Azure AI.

Membuat dan menginisialisasi proyek

  1. Buat proyek Java baru di IDE atau editor favorit Anda, dan impor pustaka berikut:

    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. Buat variabel untuk titik akhir API, kunci langganan, dan jalur ke gambar Anda. Untuk nilai endpoint, Anda dapat menggunakan titik akhir global dalam kode berikut, atau menggunakan titik akhir subdomain kustom yang ditampilkan di portal Azure untuk sumber daya Anda.

    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";
    
  3. Saat Anda mengunggah gambar lokal, data formulir harus menyertakan header Content-Disposition. Atur parameter name ke "gambar", dan atur parameter filename ke nama file gambar. Isi formulir termasuk data biner dari gambar. Ukuran gambar maksimum yang dapat Anda unggah adalah 1 MB.

    --boundary_1234-abcd
    Content-Disposition: form-data; name="image"; filename="myimagefile.jpg"
    
    ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦...
    
    --boundary_1234-abcd--
    

Membuat parser JSON

Buat metode untuk membuat respons JSON dari API lebih mudah dibaca dengan menggunakan 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);
    }

Menyusun permintaan dan kueri pencarian

  1. Dalam metode utama aplikasi Anda, buat klien HTTP menggunakan HttpClientBuilder.create().build();.

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    
  2. Buat objek HttpEntity untuk mengunggah gambar Anda ke API.

    HttpEntity entity = MultipartEntityBuilder
        .create()
        .addBinaryBody("image", new File(imagePath))
        .build();
    
  3. Buat objek httpPost dengan titik akhir Anda, dan atur header untuk menggunakan kunci langganan Anda.

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

Menerima dan memproses respons JSON

  1. Gunakan metode HttpClient.execute() untuk mengirim permintaan ke API, dan simpan respons dalam objek InputStream.

    HttpResponse response = httpClient.execute(httpPost);
    InputStream stream = response.getEntity().getContent();
    
  2. Simpan untai (karakter) JSON, dan cetak respons.

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

Langkah berikutnya