全部产品
Search
文档中心

Alibaba Cloud SDK:Integrasi SDK

更新时间:Dec 04, 2025

Untuk mempermudah pemanggilan API, kami menyarankan Anda mengintegrasikan Alibaba Cloud SDK ke dalam proyek Anda. SDK menyederhanakan proses pengembangan, mempercepat integrasi fitur, dan secara signifikan mengurangi biaya operasi & pemeliharaan (O&M). Topik ini menjelaskan cara mengintegrasikan Alibaba Cloud SDK dengan langkah-langkah berikut: menginstal SDK, mengonfigurasi kredensial akses, dan menggunakan SDK tersebut.

Prasyarat

  • .Net Framework 4.5 atau yang lebih baru, atau .Net Standard 2.0 atau yang lebih baru

  • C# 5.0 atau yang lebih baru

Impor SDK.

  1. Masuk ke SDK Center dan pilih layanan yang SDK-nya ingin Anda gunakan. Pada contoh ini, Short Message Service (SMS) dipilih.

  2. Pada halaman Short Message Service, lalu pilih C# pada bagian All languages. Pada tab Quick Start, dapatkan metode instalasi SDK Short Message Service (SMS).image

Catatan

Anda juga dapat melihat kode sumber dan panduan instalasi terkait di GitHub. Untuk informasi selengkapnya, lihat GitHub - aliyun/alibabacloud-csharp-sdk.

Konfigurasikan kredensial akses

Untuk memanggil operasi API suatu layanan Alibaba Cloud, Anda harus mengonfigurasikan kredensial akses, seperti AccessKey pair atau Security Token Service (STS) token. Untuk mencegah kebocoran AccessKey pair, Anda dapat menyimpannya dalam variabel lingkungan. Untuk informasi lebih lanjut mengenai solusi keamanan lainnya, lihat Solusi keamanan kredensial. Pada contoh ini, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET digunakan untuk menyimpan AccessKey pair.

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 tersebut, variabel lingkungan yang dikonfigurasi akan menjadi tidak valid. 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 seperti pada tabel berikut.

    Variabel

    Contoh

    AccessKey ID

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID

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

    AccessKey Secret

    • 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. Di 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 menghilangkan 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. Di 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

Dalam PowerShell, konfigurasikan variabel lingkungan baru yang 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)

Untuk mengonfigurasi variabel lingkungan bagi semua pengguna, jalankan perintah berikut 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)

Untuk mengonfigurasi variabel lingkungan sementara yang hanya berlaku untuk sesi saat ini, gunakan perintah berikut.

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

Dalam 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

Pada contoh ini, operasi API SendMessageToGlobe dari Short Message Service (SMS) dipanggil. Untuk informasi selengkapnya mengenai SendMessageToGlobe, lihat SendMessageToGlobe.

1. Inisialisasi client permintaan

Dalam SDK, semua permintaan ke operasi API dikirim melalui sebuah client. Sebelum memanggil operasi API, Anda harus menginisialisasi client permintaan tersebut. Beberapa metode tersedia untuk inisialisasi client; pada contoh ini, pasangan AccessKey digunakan. Untuk informasi selengkapnya, lihat Kelola kredensial akses.

Penting
  • Objek client, seperti instans Dysmsapi Client, bersifat thread-safe dan dapat digunakan di lingkungan multithread tanpa risiko keamanan. Anda tidak perlu membuat instans untuk setiap thread.

  • Dalam proyek pengembangan, kami menyarankan agar Anda tidak sering menggunakan kata kunci new untuk membuat objek client. Jika tidak, pemborosan resource dapat meningkat dan performa layanan dapat menurun. Kami menyarankan agar Anda membungkus client dalam pola singleton. Hal ini memastikan bahwa hanya satu instans Client yang diinisialisasi untuk kredensial akses dan endpoint yang sama sepanjang siklus hidup aplikasi.

 public static AlibabaCloud.SDK.Dysmsapi20180501.Client CreateClient(){
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID is set.
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_SECRET is set.
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
            config.Endpoint = "dysmsapi.aliyuncs.com";
            return new AlibabaCloud.SDK.Dysmsapi20180501.Client(config);
        }

2. Buat objek permintaan

Saat memanggil operasi API untuk meneruskan parameter, Anda harus menggunakan objek permintaan yang disediakan oleh SDK. Nama objek permintaan mengikuti format: <Nama operasi API>Request. Misalnya, objek permintaan untuk operasi API SendMessageToGlobe adalah SendMessageToGlobeRequest. Untuk informasi selengkapnya mengenai parameter, lihat referensi API. Informasi spesifik mengenai parameter operasi SendMessageToGlobe tersedia di SendMessageToGlobe.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu membuat objek permintaan. Misalnya, operasi DescribeCdnSubList tidak mendukung parameter permintaan.

// Create request object and set required input parameters
AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest sendMessageToGlobeRequest = new AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest
            {   
                // Please replace with the actual recipient number.
                To = "<PHONE_NUMBER>",
                // Please replace with the actual SMS content.
                Message = "<YOUR_MESSAGE>",
            };

3. Client menginisiasi permintaan.

Saat menggunakan client permintaan untuk memanggil operasi API, kami menyarankan agar Anda menggunakan fungsi dengan format: <Nama operasi API>WithOptions. Fungsi ini menerima dua parameter: objek permintaan dan parameter runtime. Objek permintaan dibuat pada langkah sebelumnya, sedangkan parameter runtime digunakan untuk menentukan perilaku permintaan, seperti konfigurasi timeout dan proxy. Untuk informasi selengkapnya, lihat Konfigurasi lanjutan.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu menentukan objek permintaan dalam permintaan tersebut. Misalnya, saat memanggil operasi DescribeCdnSubList, cukup tentukan parameter runtime saja.

Nama objek respons operasi API mengikuti format: <Nama operasi API>Response. Misalnya, objek respons untuk operasi API SendMessageToGlobe adalah SendMessageToGlobeResponse.

 // Create runtime parameters.
 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
 AlibabaCloud.SDK.Dysmsapi20180501.Client client = CreateClient();
 // Send a request.
 AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeResponse response = client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

4. Tangani error

SDK .NET V2.0 mengklasifikasikan exception menjadi TeaUnretryableException dan TeaException.

  • TeaUnretryableException: Umumnya disebabkan oleh error jaringan dan dilaporkan ketika jumlah maksimum percobaan ulang telah tercapai.

  • TeaException: Umumnya disebabkan oleh error bisnis.

Untuk informasi selengkapnya mengenai penanganan exception SDK, lihat Penanganan exception.

Penting

Kami menyarankan agar Anda menerapkan langkah penanganan exception yang tepat, seperti melaporkan exception, mencatat log exception, dan melakukan percobaan ulang, untuk memastikan ketangguhan dan stabilitas sistem Anda.

Klik untuk melihat kode contoh lengkap

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;
namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {
        public static AlibabaCloud.SDK.Dysmsapi20180501.Client CreateClient()
        {
    
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID is set.
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_SECRET is set.
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
          
            config.Endpoint = "dysmsapi.aliyuncs.com";
            return new AlibabaCloud.SDK.Dysmsapi20180501.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Dysmsapi20180501.Client client = CreateClient();
            // Create request object and set required input parameters
            AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest sendMessageToGlobeRequest = new AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest
            {   
                // Please replace with the actual recipient number.
                To = "<PHONE_NUMBER>",
                // Please replace with the actual SMS content.
                Message = "<YOUR_MESSAGE>",
            };
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            try
            {
                // Copy the code to run, please print the return value of the API by yourself.
                client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
            }
            catch (TeaException error)
            {
                // Only a printing example. Please be careful about exception handling and do not ignore exceptions directly in engineering projects.
                // print error message
                Console.WriteLine(error.Message);
                // Please click on the link below for diagnosis.
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Only a printing example. Please be careful about exception handling and do not ignore exceptions directly in engineering projects.
                // print error message
                Console.WriteLine(error.Message);
                // Please click on the link below for diagnosis.
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }


    }
}

Skenario khusus: Unggah file melalui operasi Advance

Saat menggunakan Image Search atau Visual Intelligence API (VIAPI) untuk memproses citra lokal atau mengunggah citra, API Image Search atau VIAPI yang dijelaskan dalam dokumentasi tidak mendukung unggahan langsung. Untuk mengunggah citra, Anda perlu menggunakan operasi Advance, yang mendukung transmisi aliran file. Layanan cloud menyimpan sementara file yang diunggah di Object Storage Service (OSS), lalu membaca file tersebut dari OSS bila diperlukan. Wilayah default OSS adalah cn-shanghai. Contoh berikut menunjukkan cara memanggil operasi DetectBodyCount VIAPI:

Catatan

File sementara di OSS secara berkala dihapus.

  1. Inisialisasi klien permintaan

    Pastikan parameter RegionId dan endpoint layanan cloud keduanya ditentukan. RegionId menunjukkan wilayah OSS tempat file sementara disimpan. Jika Anda tidak mengonfigurasi parameter RegionId, layanan cloud mungkin menggunakan wilayah yang berbeda dari OSS, sehingga menyebabkan timeout API.

    public static AlibabaCloud.SDK.Facebody20191230.Client CreateClient()
    {
        AlibabaCloud.OpenApiClient.Models.Config config =
            new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_ID. 
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
        config.RegionId = "cn-shanghai";
        config.Endpoint = "facebody.cn-shanghai.aliyuncs.com";
        return new AlibabaCloud.SDK.Facebody20191230.Client(config);
    }
  2. Buat objek permintaan

    Buat objek permintaan <Operasi API>AdvanceRequest untuk meneruskan aliran file. Dalam objek permintaan, atur nama parameter menjadi ImageURLObject.

    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest detectBodyCountAdvanceRequest =
        new AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest
        {
            ImageURLObject = File.OpenRead(@"<FILE_PATH>"), // Ganti <FILE_PATH> dengan path file aktual.
        };   
  3. Kirim permintaan

    Panggil fungsi <Nama operasi API>Advance untuk mengirim permintaan.

    // Konfigurasikan parameter runtime.
    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
    AlibabaCloud.SDK.Facebody20191230.Client client = CreateClient();
    // Kirim permintaan.
    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountResponse response = client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
    Console.WriteLine(AlibabaCloud.TeaUtil.Common.ToJSONString(response));

Klik untuk melihat kode contoh lengkap

// dotnet add package AlibabaCloud.SDK.Facebody20191230 --version 4.1.2

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static AlibabaCloud.SDK.Facebody20191230.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config =
                new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_ID. 
                    AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
                    AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                };
            config.RegionId = "cn-shanghai";
            config.Endpoint = "facebody.cn-shanghai.aliyuncs.com";
            return new AlibabaCloud.SDK.Facebody20191230.Client(config);
        }

        public static void Main(string[] args)
        {
            try
            {
                AlibabaCloud.SDK.Facebody20191230.Client client = CreateClient();
                // Ganti <FILE_PATH> dengan path file aktual.
                using (FileStream fileStream = File.OpenRead(@"<FILE_PATH>"))
                {
                    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest detectBodyCountAdvanceRequest =
                        new AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest
                        {
                            ImageURLObject = fileStream,
                        };
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountResponse response =
                        client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
                    Console.WriteLine(AlibabaCloud.TeaUtil.Common.ToJSONString(response));
                }
            }
            catch (TeaException error)
            {
                // Handle exceptions with caution based on your actual business scenario and do not ignore exceptions in your project. The error messages displayed in this example are for reference only. 
                Console.WriteLine(error.Message);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(
                    new Dictionary<string, object> { { "message", _error.Message } }
                );
                // Handle exceptions with caution based on your actual business scenario and do not ignore exceptions in your project. The error messages displayed in this example are for reference only. 
                Console.WriteLine(error.Message);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }
    }
}

FAQ

  • Saat memanggil OpenAPI, Anda menerima pesan error 'You are not authorized to perform this operation'.

    Penyebab: Pasangan AccessKey yang digunakan oleh pengguna Resource Access Management (RAM) tidak memiliki izin untuk memanggil operasi API tersebut.

    Solusi: Berikan izin yang diperlukan kepada pengguna RAM. Untuk informasi selengkapnya, lihat Berikan izin kepada pengguna RAM.

    Misalnya, jika error "You are not authorized to perform this operation" dilemparkan oleh operasi API SendMessageToGlobe, buat kebijakan kustom berikut untuk memberikan izin yang diperlukan kepada pengguna RAM:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  • Memanggil OpenAPI mengembalikan error berikut: "System.UnretryableException: One or more errors occurred."

    Penyebab: Operasi API tidak mendukung endpoint yang Anda tentukan saat menginisialisasi client permintaan.

    Solusi: Tentukan endpoint yang didukung dan coba lagi. Untuk informasi selengkapnya, lihat Konfigurasikan endpoint.

  • Pemanggilan OpenAPI mengembalikan error berikut: `ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found."`.

    Penyebab: Pasangan AccessKey tidak diteruskan dengan benar ke permintaan.

    Solusi: Pastikan pasangan AccessKey diteruskan dengan benar saat menginisialisasi client permintaan. Environment.GetEnvironmentVariable("XXX") menunjukkan bahwa nilai XXX diambil dari variabel lingkungan.

Untuk informasi selengkapnya mengenai penanganan error SDK, lihat FAQ.