All Products
Search
Document Center

Object Storage Service:Inisialisasi (Android SDK)

Last Updated:Jul 14, 2026

OSSClient adalah klien Android untuk layanan OSS yang menyediakan metode untuk mengelola bucket dan objek. Sebelum menggunakan kit pengembangan perangkat lunak (SDK) untuk mengirim permintaan ke OSS, Anda harus menginisialisasi instans OSSClient dan mengonfigurasi pengaturannya.

Catatan

Siklus hidup OSSClient harus sesuai dengan siklus hidup aplikasi. Buat OSSClient secara global saat aplikasi dimulai, dan hapus OSSClient saat aplikasi diakhiri.

Inisialisasi OSSClient

Penting

Lingkungan terminal seluler merupakan lingkungan yang tidak tepercaya. Menyimpan AccessKeyId dan AccessKeySecret secara langsung di terminal untuk menandatangani permintaan menimbulkan ancaman keamanan tinggi. Kami menyarankan agar Anda menggunakan mode otentikasi Security Token Service (STS) atau mode tanda tangan sendiri.

Meskipun kredensial STS sementara dapat diekstraksi setelah mencapai klien seluler, Anda tetap harus membatasinya lebih lanjut melalui kebijakan RAM yang membatasi cakupan izin hanya untuk satu pengguna serta periode validitas yang singkat. Untuk skenario yang melibatkan data sensitif seperti KTP, gambar wajah, atau kredensial pembayaran, mintalah server aplikasi Anda menghasilkan URL yang ditandatangani sebelumnya (presigned URL) untuk digunakan oleh aplikasi seluler—aplikasi seluler itu sendiri tidak pernah menyimpan kredensial apa pun. Untuk pemilihan penyedia kredensial, lihat Konfigurasikan kredensial akses (Android SDK). Untuk informasi mengenai URL yang ditandatangani sebelumnya, lihat Otorisasi akses (Android SDK).

Anda dapat membuat OSSClient dengan salah satu cara berikut.

Catatan

Untuk mempelajari cara memanggil antarmuka untuk operasi seperti unggah dan unduh, lihat Mulai Cepat (Android SDK).

Metode inisialisasi OSSClient untuk menampilkan daftar bucket berbeda dari metode umum yang ditunjukkan dalam contoh ini. Untuk informasi selengkapnya, lihat Tampilkan daftar bucket (Android SDK).

Buat OSSClient menggunakan STS

Kode berikut menunjukkan cara membuat OSSClient menggunakan STS.

// Tetapkan yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// ID AccessKey temporary dan Rahasia AccessKey yang diperoleh dari layanan STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari layanan STS.
String securityToken = "yourSecurityToken";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

Buat OSSClient menggunakan nama domain kustom

Kode berikut menunjukkan cara membuat OSSClient menggunakan nama domain kustom.

// Tetapkan yourEndpoint ke nama domain kustom.
String endpoint = "yourEndpoint";
// ID AccessKey temporary dan Rahasia AccessKey yang diperoleh dari layanan STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari layanan STS.
String securityToken = "yourSecurityToken";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

Buat OSSClient di lingkungan Apsara Stack atau domain privat

Kode berikut menunjukkan cara membuat OSSClient di lingkungan Apsara Stack atau domain privat.

// Tetapkan yourEndpoint ke Endpoint wilayah tempat bucket berada.
String endpoint = "yourEndpoint";
// ID AccessKey temporary dan Rahasia AccessKey yang diperoleh dari layanan STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari layanan STS.
String securityToken = "yourSecurityToken";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration configuration = new ClientConfiguration();
// Lewati penguraian CNAME.
List<String> excludeList = new ArrayList<>();
excludeList.add(endpoint);
configuration.setCustomCnameExcludeList(excludeList);
// Buat instans OSSClient.
configuration.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

Konfigurasikan OSSClient

ClientConfiguration adalah kelas konfigurasi untuk OSSClient. Anda dapat menggunakan kelas ini untuk mengonfigurasi parameter seperti proxy, timeout koneksi, dan jumlah koneksi maksimum.

Parameter

Deskripsi

Metode

maxConcurrentRequest

Jumlah maksimum permintaan konkuren. Nilai default: 5.

ClientConfiguration.setMaxConcurrentRequest

socketTimeout

Periode timeout untuk transmisi data di lapisan socket, dalam milidetik. Nilai default: 60000.

ClientConfiguration.setSocketTimeout

connectionTimeout

Periode timeout untuk membangun koneksi, dalam milidetik. Nilai default: 60000.

ClientConfiguration.setConnectionTimeout

max_log_size

Ukuran file log. Nilai default: 5 MB.

ClientConfiguration.setMaxLogSize

maxErrorRetry

Jumlah maksimum percobaan ulang setelah permintaan gagal. Nilai default: 2.

ClientConfiguration.setMaxErrorRetry

customCnameExcludeList

Elemen dalam daftar akan melewati penguraian canonical name (CNAME).

ClientConfiguration.setCustomCnameExcludeList

proxyHost

Alamat host Server proxy.

ClientConfiguration.setProxyHost

proxyPort

Port Server proxy.

ClientConfiguration.setProxyPort

mUserAgentMark

Header User-Agent HTTP pada user agent.

ClientConfiguration.setUserAgentMark

httpDnsEnable

Menentukan apakah HTTPDNS diaktifkan.

  • true: HTTPDNS diaktifkan secara default untuk versi sebelum 2.9.12.

  • false: HTTPDNS dinonaktifkan secara default untuk versi 2.9.12 dan yang lebih baru.

ClientConfiguration.setHttpDnsEnable

checkCRC64

Menentukan apakah Pemeriksaan redundansi siklik 64-bit (CRC-64) diaktifkan. Nilai yang valid:

  • true: Mengaktifkan CRC-64.

  • false (default): Menonaktifkan CRC-64.

ClientConfiguration.setCheckCRC64

followRedirectsEnable

Menentukan apakah Pengalihan HTTP diaktifkan. Nilai yang valid:

  • true: Mengaktifkan Pengalihan HTTP.

  • false (default): Menonaktifkan Pengalihan HTTP.

ClientConfiguration.setFollowRedirectsEnable

okHttpClient

okHttpClient kustom.

ClientConfiguration.setOkHttpClient

Kode berikut menunjukkan cara menggunakan ClientConfiguration untuk mengonfigurasi parameter OSSClient.

// Tetapkan yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// ID AccessKey temporary dan Rahasia AccessKey yang diperoleh dari layanan STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari layanan STS.
String securityToken = "yourSecurityToken";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
String region = "yourRegion";

ClientConfiguration configuration = new ClientConfiguration();
// Tetapkan jumlah maksimum permintaan konkuren. Nilai default: 5.
// configuration.setMaxConcurrentRequest(3);
// Tetapkan periode timeout untuk transmisi data di lapisan socket. Nilai default: 60 detik.
// configuration.setSocketTimeout(50000);
// Tetapkan periode timeout untuk membangun koneksi. Nilai default: 60 detik.
// configuration.setConnectionTimeout(50000);
// Tetapkan ukuran file log. Nilai default: 5 MB.
// configuration.setMaxLogSize(3 * 1024 * 1024);
// Tetapkan jumlah maksimum percobaan ulang setelah permintaan gagal. Nilai default: 2.
// configuration.setMaxErrorRetry(3);
// Elemen dalam daftar akan melewati penguraian CNAME.
// List<String> cnameExcludeList = new ArrayList<>();
// cnameExcludeList.add("cname");
// configuration.setCustomCnameExcludeList(cnameExcludeList);
// Alamat host Server proxy.
// configuration.setProxyHost("yourProxyHost");
// Port Server proxy.
// configuration.setProxyPort(8080);
// Header User-Agent HTTP pada user agent.
// configuration.setUserAgentMark("yourUserAgent");
// Menentukan apakah Pemeriksaan redundansi siklik (CRC) diaktifkan. Nilai default: false.
// configuration.setCheckCRC64(true);
// Menentukan apakah Pengalihan HTTP diaktifkan. Nilai default: false.
// configuration.setFollowRedirectsEnable(true);
// Tetapkan OkHttpClient kustom.
// OkHttpClient.Builder builder = new OkHttpClient.Builder();
// configuration.setOkHttpClient(builder.build());

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
configuration.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

Aktifkan logging

Lingkungan terminal seluler sangat kompleks. SDK OSS mungkin tidak berfungsi dengan benar di beberapa wilayah atau pada periode tertentu. Untuk membantu developer mengidentifikasi masalah, SDK OSS mencatat informasi log secara lokal setelah fitur logging diaktifkan. Untuk mengaktifkan logging, Anda harus menginisialisasinya sebelum menggunakan OSSClient. Panggil metode berikut.

// Gaya log.
// Panggil OSSLog.enableLog() untuk mengaktifkan penampilan log di Konsol.
// Anda dapat menulis file log ke path \OSSLog\logs.csv pada kartu SD internal ponsel. Fitur ini dinonaktifkan secara default.
// Log mencatat data permintaan, data respons, dan informasi pengecualian untuk operasi OSS.
// Misalnya, requestId dan header respons.
// Berikut adalah contoh catatan log.
// Versi Android.
// android_version: 5.1  
// Model ponsel Android.
// mobile_model: XT1085
// Status jaringan.  
// network_state: connected
// Jenis koneksi jaringan.
// network_type: WIFI 
// Informasi perilaku operasi spesifik.
// [2017-09-05 16:54:52] - Encounter local execpiton: //java.lang.IllegalArgumentException: The bucket name is invalid. 
// A bucket name must: 
// 1) be comprised of lower-case characters, numbers or dash(-); 
// 2) start with lower case or numbers; 
// 3) be between 3-63 characters long. 
//------>end of log
// Panggil metode ini untuk mengaktifkan logging.
OSSLog.enableLog();              
Catatan

Anda dapat mengunggah file tersebut ke server Anda atau menggunakan Alibaba Cloud Simple Log Service untuk mengunggah file log.

Antarmuka sinkron dan asinkron

SDK Android menyediakan contoh panggilan sinkron dan asinkron untuk antarmuka unggah dan unduh karena permintaan jaringan tidak diizinkan di thread UI dalam pengembangan aplikasi seluler. Untuk antarmuka lainnya, contoh panggilan asinkron merupakan contoh utama yang disediakan.

  • Panggilan sinkron

    • Panggilan antarmuka sinkron memblokir thread hingga hasil dikembalikan.

    • Jangan memanggil antarmuka sinkron di thread UI.

    • Ketika terjadi pengecualian selama panggilan antarmuka sinkron, ClientException atau ServiceException dilemparkan secara langsung. ClientException menunjukkan pengecualian lokal, seperti masalah konektivitas jaringan atau parameter yang tidak valid. ServiceException menunjukkan kesalahan layanan yang dikembalikan oleh OSS, seperti kegagalan otentikasi atau kesalahan server.

  • Panggilan asinkron

    • Untuk antarmuka asinkron, Anda meneruskan fungsi callback saat membuat permintaan. Hasil permintaan diproses di dalam callback.

    • Ketika terjadi pengecualian selama permintaan asinkron, pengecualian tersebut ditangani di dalam fungsi callback.

    • Memanggil antarmuka asinkron secara langsung mengembalikan Task.

      OSSAsyncTask task = oss.asyncGetObejct(...);
      task.cancel(); // Batalkan task.
      task.waitUntilFinished(); // Tunggu hingga task selesai.
      GetObjectResult result = task.getResult(); // Blokir thread dan tunggu hasilnya.