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
Masuk ke SDK Center dan pilih produk yang ingin Anda gunakan, seperti Short Message Service (SMS).
Pada halaman Install, atur All Languages menjadi Java. Lalu, pada tab Quick Start, temukan metode instalasi SDK Short Message Service (SMS).

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
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=yourAccessKeyIDKonfigurasikan Rahasia AccessKey dan tekan Enter.
# Ganti <ACCESS_KEY_SECRET> dengan Rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecretPeriksa 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%danecho %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/Mmenunjukkan 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%danecho %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.
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.
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.
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.
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
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:
File sementara yang disimpan di Alibaba Cloud OSS dihapus secara berkala.
Inisialisasi klien permintaan
Anda harus menyetel
regionIddanendpointproduk cloud.regionIdmenentukan wilayah tempat file sementara disimpan di OSS. Jika Anda tidak menyetelregionId, 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); }Buat objek permintaan
Buat objek
<NamaOpenAPI>AdvanceRequestuntuk meneruskan aliran file. Untuk informasi lebih lanjut tentang nama dan jenis parameter, lihat file sumber<NamaOpenAPI>AdvanceRequest. Misalnya, nama parameter yang didukung olehDetectBodyCountAdvanceRequestadalahimageURLObject, dan jenisnya adalahInputStream.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.Lakukan permintaan
Panggil fungsi
<apiName>Advanceuntuk 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);
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 nilaiXXXdari variabel lingkungan.
Untuk solusi lebih lanjut mengenai kesalahan yang terjadi saat menggunakan SDK, lihat FAQ.