全部产品
Search
文档中心

Alibaba Cloud SDK:Integrasikan SDK

更新时间:Nov 10, 2025

Untuk memanggil OpenAPI, Anda harus mengintegrasikan SDK ke dalam proyek Anda. SDK menyederhanakan pengembangan, mempercepat integrasi fitur, dan mengurangi biaya pemeliharaan. Integrasi Alibaba Cloud SDK mencakup tiga langkah: mengimpor SDK, menyetel kredensial akses, dan menggunakan SDK. Topik ini menjelaskan cara melakukan integrasi tersebut.

Prasyarat

JDK 1.8 atau versi yang lebih baru.

Impor SDK

  1. Masuk ke SDK Center dan pilih produk yang ingin Anda gunakan, seperti Short Message Service (SMS).

  2. Pada halaman Install, atur All Languages menjadi Java. Lalu, pada tab Quick Start, temukan metode instalasi SDK Short Message Service (SMS).image

Setel kredensial akses

Untuk memanggil Alibaba Cloud OpenAPI, Anda harus menyetel kredensial akses Anda. Jenis kredensial umum mencakup AccessKey dan Token Layanan Keamanan (STS). Untuk mencegah kebocoran kredensial, kami merekomendasikan menyimpannya sebagai variabel lingkungan. Untuk informasi lebih lanjut tentang solusi keamanan, lihat Gunakan kredensial akses secara aman. Topik ini menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET sebagai contoh:

Konfigurasikan variabel lingkungan di Linux dan macOS

Konfigurasikan variabel lingkungan menggunakan perintah export

Penting

Variabel lingkungan sementara yang dikonfigurasi menggunakan perintah export hanya berlaku untuk sesi saat ini. Setelah Anda keluar dari sesi, variabel lingkungan tersebut tidak lagi berlaku. Untuk mengonfigurasi variabel lingkungan permanen, tambahkan perintah export ke file konfigurasi startup sistem operasi yang sesuai.

  • Konfigurasikan ID AccessKey dan tekan Enter.

    # Ganti <ACCESS_KEY_ID> dengan ID AccessKey Anda.
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • Konfigurasikan Rahasia AccessKey dan tekan Enter.

    # Ganti <ACCESS_KEY_SECRET> dengan Rahasia AccessKey Anda.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Periksa apakah konfigurasi berhasil.

    Jalankan perintah echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika ID AccessKey yang valid dikembalikan, berarti variabel lingkungan telah dikonfigurasi.

Konfigurasikan variabel lingkungan di Windows

Gunakan GUI

  • Prosedur

    Jika Anda ingin menggunakan antarmuka grafis untuk mengonfigurasi variabel lingkungan di Windows 10, ikuti langkah-langkah berikut:

    Di desktop Windows, klik kanan This PC dan pilih Properties. Pada halaman yang muncul, klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Di kotak dialog Environment Variables, klik New di bagian User variables atau System variables. Lalu, konfigurasikan variabel sesuai dengan tabel berikut.

    Variabel

    Contoh

    ID AccessKey

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID

    • Nilai variabel: LTAI****************

    Rahasia AccessKey

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Nilai variabel: yourAccessKeySecret

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Start atau tekan Win + R. Di kotak dialog Run, masukkan cmd. Lalu, klik OK atau tekan Enter. Pada jendela Command Prompt yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan CMD

  • Prosedur

    Buka jendela Command Prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan ke sistem operasi:

    setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
    setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

    /M menunjukkan bahwa variabel lingkungan bersifat tingkat sistem. Anda dapat memilih untuk tidak menggunakan parameter ini jika mengonfigurasi variabel lingkungan tingkat pengguna.

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Start atau tekan Win + R. Di kotak dialog Run, masukkan cmd. Lalu, klik OK atau tekan Enter. Pada jendela Command Prompt yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan Windows PowerShell

Di PowerShell, konfigurasikan variabel lingkungan baru. Variabel ini berlaku untuk semua sesi baru.

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

Konfigurasikan variabel lingkungan untuk semua pengguna. Perintah berikut harus dijalankan sebagai administrator.

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

Konfigurasikan variabel lingkungan sementara. Variabel ini hanya berlaku untuk sesi saat ini.

$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

Di PowerShell, jalankan perintah Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID dan Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan SDK

Topik ini menggunakan API SendMessageToGlobe dari Short Message Service (SMS) sebagai contoh. Untuk informasi lebih lanjut tentang API SendMessageToGlobe, lihat SendMessageToGlobe.

1. Inisialisasi klien permintaan

Dalam SDK, semua pemanggilan OpenAPI dimulai dari klien permintaan (Client). Sebelum memanggil OpenAPI, Anda harus menginisialisasi klien permintaan. Klien permintaan dapat diinisialisasi dengan berbagai cara. Contoh ini menunjukkan cara menggunakan AccessKey untuk menginisialisasi klien. Untuk informasi lebih lanjut tentang metode inisialisasi, lihat Kelola kredensial akses.

Penting
  • Objek klien, seperti instans `Client`, bersifat thread-safe. Anda dapat menggunakannya di lingkungan multi-threaded tanpa membuat instans terpisah untuk setiap thread.

  • Dalam pengembangan Anda, hindari sering membuat objek klien menggunakan kata kunci `new`. Praktik ini dapat menyebabkan pemborosan sumber daya dan degradasi kinerja. Kami merekomendasikan penggunaan pola singleton untuk mengenkapsulasi klien, sehingga hanya satu objek klien yang diinisialisasi untuk kredensial akses dan titik akhir yang sama sepanjang siklus hidup aplikasi.

public static com.aliyun.dysmsapi20180501.Client createClient() throws Exception {
    com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
            // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
            .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
            // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
            .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    // Lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = "dysmsapi.aliyuncs.com";
    return new com.aliyun.dysmsapi20180501.Client(config);
}

2. Buat objek permintaan

Saat memanggil OpenAPI, Anda dapat menggunakan objek permintaan yang disediakan oleh SDK untuk meneruskan parameter. Objek permintaan untuk OpenAPI dinamai dalam format <NamaOpenAPI>Request. Misalnya, objek permintaan untuk API SendSms adalah SendSmsRequest. Untuk informasi lebih lanjut tentang parameter permintaan, lihat dokumentasi API untuk SendMessageToGlobe.

Catatan

Jika OpenAPI tidak mendukung parameter permintaan, Anda tidak perlu membuat objek permintaan. Misalnya, saat memanggil DescribeCdnSubList, API tersebut tidak mendukung parameter permintaan.

com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest sendMessageToGlobeRequest = new com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest()
                .setTo("8521245567****")
                .setMessage("Hello");

3. Lakukan permintaan

Saat menggunakan klien permintaan untuk memanggil OpenAPI, kami merekomendasikan menggunakan fungsi dalam format <namaApi>WithOptions, di mana <namaApi> adalah nama OpenAPI dalam camel case. Fungsi ini memiliki dua parameter: objek permintaan dari langkah sebelumnya dan parameter runtime. Parameter runtime mengonfigurasi perilaku permintaan, seperti pengaturan timeout dan konfigurasi proxy. Untuk informasi lebih lanjut, lihat Konfigurasi lanjutan.

Catatan

Jika OpenAPI tidak mendukung parameter permintaan, Anda tidak perlu meneruskan objek permintaan saat melakukan permintaan. Misalnya, saat memanggil DescribeCdnSubList, Anda hanya perlu meneruskan parameter runtime.

Objek tanggapan untuk OpenAPI dinamai dalam format <NamaOpenAPI>Response. Misalnya, objek tanggapan untuk API SendSms adalah SendSmsResponse.

com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
Client client = createClient();
// panggil api
client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

4. Tangani pengecualian

Java SDK mengklasifikasikan pengecualian menjadi `TeaUnretryableException` dan `TeaException`.

  • `TeaUnretryableException`: Pengecualian ini biasanya disebabkan oleh masalah jaringan dan dilemparkan setelah jumlah maksimum percobaan ulang tercapai.

  • `TeaException`: Pengecualian ini terutama disebabkan oleh kesalahan bisnis.

Untuk informasi lebih lanjut tentang penanganan pengecualian, lihat Penanganan pengecualian.

Penting

Ambil tindakan yang tepat untuk menangani pengecualian, seperti menyebarkan pengecualian, mencatat log, dan mencoba pemulihan, guna memastikan ketangguhan dan stabilitas sistem Anda.

Lihat contoh kode lengkap

Contoh pemanggilan API SendMessageToGlobe

import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.google.gson.Gson;

public class Sample {
    public static Client createClient() throws Exception {
        Config config = new Config()
                // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Wajib, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // Lihat https://api.alibabacloud.com/product/Dysmsapi.
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new Client(config);
    }

    public static void main(String[] args_) {
        try {
            Client client = Sample.createClient();
            SendMessageToGlobeRequest sendMessageToGlobeRequest = new SendMessageToGlobeRequest()
                    .setTo("8521245567****")
                    .setMessage("Hello");
            RuntimeOptions runtime = new RuntimeOptions();

            SendMessageToGlobeResponse sendMessageToGlobeResponse = client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
            System.out.println(new Gson().toJson(sendMessageToGlobeResponse.body));
        } catch (TeaUnretryableException ue) {
            // Hanya contoh pencetakan. Harap berhati-hati dalam penanganan pengecualian dan jangan mengabaikan pengecualian secara langsung dalam proyek rekayasa.
            ue.printStackTrace();
            // cetak pesan kesalahan
            System.out.println(ue.getMessage());
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            // Hanya contoh pencetakan. Harap berhati-hati dalam penanganan pengecualian dan jangan mengabaikan pengecualian secara langsung dalam proyek rekayasa.
            e.printStackTrace();
            // cetak pesan kesalahan
            System.out.println(e.getCode());
            System.out.println(e.getMessage());
            System.out.println(e.getData());
        } catch (Exception e) {
            // Hanya contoh pencetakan. Harap berhati-hati dalam penanganan pengecualian dan jangan mengabaikan pengecualian secara langsung dalam proyek rekayasa.
            e.printStackTrace();
        }
    }
}

Skenario khusus: Konfigurasikan antarmuka Advance untuk unggah file

Saat menggunakan produk cloud seperti Image Search dan Visual Intelligence API untuk memproses atau mengunggah citra lokal, OpenAPI yang disediakan dalam dokumentasi resmi mungkin tidak secara langsung mendukung unggah file. Untuk mengunggah file dalam kasus ini, Anda dapat menggunakan antarmuka Advance yang disediakan oleh produk cloud. Antarmuka ini mendukung penerusan objek aliran file. Mekanisme implementasi dasarnya adalah sebagai berikut: Produk cloud menyimpan sementara file yang diunggah di Alibaba Cloud Object Storage Service (OSS). Wilayah penyimpanan default adalah cn-shanghai. Produk kemudian membaca file sementara dari OSS untuk mengimplementasikan fitur terkait. Topik ini menggunakan antarmuka DetectBodyCount dari Visual Intelligence API - Face and Body sebagai contoh:

Catatan

File sementara yang disimpan di Alibaba Cloud OSS dihapus secara berkala.

  1. Inisialisasi klien permintaan

    Anda harus menyetel regionId dan endpoint produk cloud. regionId menentukan wilayah tempat file sementara disimpan di OSS. Jika Anda tidak menyetel regionId, Anda mungkin mengalami masalah seperti timeout saat memanggil OpenAPI karena produk cloud dan OSS berada di wilayah yang berbeda.

    public static com.aliyun.facebody20191230.Client createClient() throws Exception {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                 // Wajib. System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") mendapatkan ID AccessKey dari variabel lingkungan.
                 .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                 // Wajib. System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") mendapatkan Rahasia AccessKey dari variabel lingkungan.
                 .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
         config.regionId = "cn-shanghai";
         config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
         return new com.aliyun.facebody20191230.Client(config);
    }
  2. Buat objek permintaan

    Buat objek <NamaOpenAPI>AdvanceRequest untuk meneruskan aliran file. Untuk informasi lebih lanjut tentang nama dan jenis parameter, lihat file sumber <NamaOpenAPI>AdvanceRequest. Misalnya, nama parameter yang didukung oleh DetectBodyCountAdvanceRequest adalah imageURLObject, dan jenisnya adalah InputStream.

    com.aliyun.facebody20191230.models.DetectBodyCountAdvanceRequest detectBodyCountAdvance = new com.aliyun.facebody20191230.models.DetectBodyCountAdvanceRequest()
            .setImageURLObject(Files.newInputStream(Paths.get("<FILE_PATH>"))); // Ganti <FILE_PATH> dengan path file sebenarnya.
  3. Lakukan permintaan

    Panggil fungsi <apiName>Advance untuk menginisiasi permintaan.

    com.aliyun.facebody20191230.Client client = createClient();
    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    // Lakukan permintaan.
    com.aliyun.facebody20191230.models.DetectBodyCountResponse resp = client.detectBodyCountAdvance(detectBodyCountAdvance, runtime);

Lihat contoh kode lengkap

/**
 * <dependency>
 *   <groupId>com.aliyun</groupId>
 *   <artifactId>facebody20191230</artifactId>
 *   <version>5.1.2</version>
 * </dependency>
 */

import com.aliyun.tea.*;
import com.google.gson.Gson;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Sample {

    public static com.aliyun.facebody20191230.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // Wajib. System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") mendapatkan ID AccessKey dari variabel lingkungan.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Wajib. System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") mendapatkan Rahasia AccessKey dari variabel lingkungan.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        config.regionId = "cn-shanghai";
        config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
        return new com.aliyun.facebody20191230.Client(config);
    }

    public static void main(String[] args_) {
        try {
            com.aliyun.facebody20191230.Client client = Sample.createClient();
            com.aliyun.facebody20191230.models.DetectBodyCountAdvanceRequest detectBodyCountAdvance = new com.aliyun.facebody20191230.models.DetectBodyCountAdvanceRequest()
                    .setImageURLObject(Files.newInputStream(Paths.get("<FILE_PATH>")));  // Ganti <FILE_PATH> dengan path file sebenarnya.
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            com.aliyun.facebody20191230.models.DetectBodyCountResponse resp = client.detectBodyCountAdvance(detectBodyCountAdvance, runtime);
            System.out.println(new Gson().toJson(resp.body));
        } catch (TeaUnretryableException ue) {
            ue.printStackTrace();
            // Cetak pesan kesalahan.
            System.out.println(ue.getMessage());
            // Cetak catatan permintaan untuk menanyakan informasi permintaan saat terjadi kesalahan.
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            e.printStackTrace();
            // Cetak kode kesalahan.
            System.out.println(e.getCode());
            // Cetak pesan kesalahan, yang mencakup RequestId.
            System.out.println(e.getMessage());
            // Cetak konten kesalahan spesifik yang dikembalikan oleh server.
            System.out.println(e.getData());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

FAQ

  • Pesan kesalahan "You are not authorized to perform this operation." dikembalikan saat saya memanggil OpenAPI.

    Penyebab: Pengguna Resource Access Management (RAM) yang sesuai dengan AccessKey yang Anda gunakan tidak memiliki izin untuk memanggil API tersebut.

    Solusi: Berikan izin OpenAPI yang diperlukan kepada pengguna RAM. Untuk informasi lebih lanjut tentang cara memberikan izin kepada pengguna RAM, lihat Berikan izin kepada pengguna RAM.

    Sebagai contoh, jika kesalahan "You are not authorized to perform this operation." dikembalikan saat Anda memanggil SendMessageToGlobe, Anda dapat membuat kebijakan kustom berikut dan memberikan izin yang sesuai kepada pengguna RAM.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  • Pesan kesalahan "The specified endpoint can't operate this region." dikembalikan saat saya memanggil OpenAPI.

    Penyebab: OpenAPI yang Anda panggil tidak mendukung titik akhir yang Anda tentukan saat menginisialisasi klien permintaan.

    Solusi: Lihat Konfigurasi titik akhir, ubah titik akhir, lalu panggil kembali OpenAPI.

  • Pesan kesalahan "java.lang.NullPointerException..." dikembalikan saat saya memanggil OpenAPI.

    Penyebab: AccessKey Anda tidak diteruskan dengan benar.

    Solusi: Saat menginisialisasi klien permintaan, periksa apakah AccessKey diteruskan dengan benar. Perhatikan bahwa System.getenv("XXX") mengambil nilai XXX dari variabel lingkungan.

Untuk solusi lebih lanjut mengenai kesalahan yang terjadi saat menggunakan SDK, lihat FAQ.