Tous les produits
Search
Centre de documentation

Object Storage Service:Initialization (Android SDK)

Dernière mise à jour :Aug 18, 2026

OSSClient est le client Android pour le service OSS. Il fournit des méthodes de gestion des buckets et des objets. Avant d'utiliser le kit de développement logiciel (SDK) pour envoyer des requêtes à OSS, vous devez initialiser une instance OSSClient et configurer ses paramètres.

Remarque

Le cycle de vie de l'OSSClient doit correspondre à celui de l'application. Créez un OSSClient global au démarrage de l'application et détruisez-le à la fin de celle-ci.

Initialisation de l'OSSClient

Important

Un terminal mobile constitue un environnement non fiable. Stocker directement sur le terminal l'AccessKeyId et l'AccessKeySecret pour signer les requêtes présente un risque élevé pour la sécurité. Nous vous recommandons d'utiliser le mode d'authentification STS (Security Token Service) ou le mode autosigné.

Les identifiants temporaires STS peuvent être extraits après leur réception sur le client mobile. Vous devez donc les restreindre davantage en appliquant une politique RAM qui limite les autorisations à un seul utilisateur, associée à une courte période de validité. Pour les scénarios impliquant des données sensibles telles que les cartes d'identité, les images faciales ou les informations de paiement, faites générer une URL présignée par votre serveur d'application ; l'application mobile elle-même ne doit jamais détenir d'identifiant. Pour choisir le fournisseur d'identifiants approprié, consultez la rubrique Configurer les identifiants d'accès (SDK Android). Pour les URL présignées, reportez-vous à la section Autoriser l'accès (SDK Android).

Créez un OSSClient selon l'une des méthodes suivantes.

Remarque

Pour savoir comment appeler les interfaces pour des opérations telles que les téléchargements et les téléversements, consultez la rubrique Démarrage rapide (SDK Android).

La méthode d'initialisation de l'OSSClient pour lister les buckets diffère de la méthode générale présentée dans ces exemples. Pour plus d'informations, consultez la rubrique Lister les buckets (SDK Android).

Création d'un OSSClient à l'aide de STS

Le code suivant montre comment créer un OSSClient à l'aide de STS.

// Set yourEndpoint to the Endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// The temporary AccessKey ID and AccessKey secret obtained from the STS service.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// The security token obtained from the STS service.
String securityToken = "yourSecurityToken";
// Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "yourRegion";

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

Création d'un OSSClient à l'aide d'un nom de domaine personnalisé

Le code suivant montre comment créer un OSSClient à l'aide d'un nom de domaine personnalisé.

// Set yourEndpoint to the custom domain name.
String endpoint = "yourEndpoint";
// The temporary AccessKey ID and AccessKey secret obtained from the STS service.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// The security token obtained from the STS service.
String securityToken = "yourSecurityToken";
// Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "yourRegion";

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

Création d'un OSSClient dans un environnement Apsara Stack ou avec un domaine privé

Le code suivant montre comment créer un OSSClient dans un environnement Apsara Stack ou avec un domaine privé.

// Set yourEndpoint to the Endpoint of the region where the bucket is located.
String endpoint = "yourEndpoint";
// The temporary AccessKey ID and AccessKey secret obtained from the STS service.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// The security token obtained from the STS service.
String securityToken = "yourSecurityToken";
// Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration configuration = new ClientConfiguration();
// Skip CNAME parsing.
List<String> excludeList = new ArrayList<>();
excludeList.add(endpoint);
configuration.setCustomCnameExcludeList(excludeList);
// Create an OSSClient instance.
configuration.setSignVersion(SignVersion.V4);
// Create an OSSClient instance.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

Configuration de l'OSSClient

ClientConfiguration est la classe de configuration de l'OSSClient. Elle permet de définir divers paramètres tels que le proxy, le délai de connexion et le nombre maximal de connexions.

Paramètre

Description

Méthode

maxConcurrentRequest

Nombre maximal de requêtes simultanées. Valeur par défaut : 5.

ClientConfiguration.setMaxConcurrentRequest

socketTimeout

Délai d'expiration pour la transmission des données au niveau du socket, en millisecondes. Valeur par défaut : 60000.

ClientConfiguration.setSocketTimeout

connectionTimeout

Délai d'expiration pour l'établissement d'une connexion, en millisecondes. Valeur par défaut : 60000.

ClientConfiguration.setConnectionTimeout

max_log_size

Taille du fichier journal. Valeur par défaut : 5 Mo.

ClientConfiguration.setMaxLogSize

maxErrorRetry

Nombre maximal de tentatives après l'échec d'une requête. Valeur par défaut : 2.

ClientConfiguration.setMaxErrorRetry

customCnameExcludeList

Les éléments de cette liste ignorent l'analyse du nom canonique (CNAME).

ClientConfiguration.setCustomCnameExcludeList

proxyHost

Adresse hôte du serveur proxy.

ClientConfiguration.setProxyHost

proxyPort

Port du serveur proxy.

ClientConfiguration.setProxyPort

mUserAgentMark

En-tête User-Agent HTTP dans l'agent utilisateur.

ClientConfiguration.setUserAgentMark

httpDnsEnable

Indique si HTTPDNS est activé.

  • true : HTTPDNS est activé par défaut pour les versions antérieures à la 2.9.12.

  • false : HTTPDNS est désactivé par défaut pour les versions 2.9.12 et ultérieures.

ClientConfiguration.setHttpDnsEnable

checkCRC64

Indique si la vérification de redondance cyclique 64 bits (CRC-64) est activée. Valeurs possibles :

  • true : active la CRC-64.

  • false (par défaut) : désactive la CRC-64.

ClientConfiguration.setCheckCRC64

followRedirectsEnable

Indique si la redirection HTTP est activée. Valeurs possibles :

  • true : active la redirection HTTP.

  • false (par défaut) : désactive la redirection HTTP.

ClientConfiguration.setFollowRedirectsEnable

okHttpClient

okHttpClient personnalisé.

ClientConfiguration.setOkHttpClient

Le code suivant illustre l'utilisation de ClientConfiguration pour configurer les paramètres de l'OSSClient.

// Set yourEndpoint to the Endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// The temporary AccessKey ID and AccessKey secret obtained from the STS service.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// The security token obtained from the STS service.
String securityToken = "yourSecurityToken";
// Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "yourRegion";

ClientConfiguration configuration = new ClientConfiguration();
// Set the maximum number of concurrent requests. Default value: 5.
// configuration.setMaxConcurrentRequest(3);
// Set the timeout period for data transmission at the socket layer. Default value: 60s.
// configuration.setSocketTimeout(50000);
// Set the timeout period for establishing a connection. Default value: 60s.
// configuration.setConnectionTimeout(50000);
// Set the size of the log file. Default value: 5 MB.
// configuration.setMaxLogSize(3 * 1024 * 1024);
// Set the maximum number of retries after a request fails. Default value: 2.
// configuration.setMaxErrorRetry(3);
// Elements in the list will skip CNAME parsing.
// List<String> cnameExcludeList = new ArrayList<>();
// cnameExcludeList.add("cname");
// configuration.setCustomCnameExcludeList(cnameExcludeList);
// The host address of the proxy server.
// configuration.setProxyHost("yourProxyHost");
// The port of the proxy server.
// configuration.setProxyPort(8080);
// The User-Agent header of HTTP in the user agent.
// configuration.setUserAgentMark("yourUserAgent");
// Specifies whether to enable cyclic redundancy check (CRC). Default value: false.
// configuration.setCheckCRC64(true);
// Specifies whether to enable HTTP redirection. Default value: false.
// configuration.setFollowRedirectsEnable(true);
// Set a custom OkHttpClient.
// OkHttpClient.Builder builder = new OkHttpClient.Builder();
// configuration.setOkHttpClient(builder.build());

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

Activation de la journalisation

L'environnement des terminaux mobiles est complexe. Le SDK OSS peut ne pas fonctionner correctement dans certaines régions ou à certains moments. Pour aider les développeurs à identifier les problèmes, le SDK OSS enregistre localement les informations de journalisation lorsque la fonctionnalité de journalisation est activée. Initialisez cette fonctionnalité avant d'utiliser l'OSSClient. Appelez la méthode comme suit.

// Log style.
// Call OSSLog.enableLog() to enable viewing logs in the console.
// You can write log files to the \OSSLog\logs.csv path on the phone's built-in SD card. This is disabled by default.
// Logs record request data, response data, and exception information for OSS operations.
// For example, requestId and response header.
// The following is a sample log record.
// Android version.
// android_version: 5.1  
// Android phone model.
// mobile_model: XT1085
// Network status.  
// network_state: connected
// Network connection type.
// network_type: WIFI 
// Specific operation behavior information.
// [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
// Call this method to enable logging.
OSSLog.enableLog();              
Remarque

Vous pouvez téléverser les fichiers vers votre serveur ou utiliser Alibaba Cloud Simple Log Service pour téléverser les fichiers journaux.

Interfaces synchrones et asynchrones

Le SDK Android propose des exemples d'appels synchrones et asynchrones pour les interfaces de téléversement et de téléchargement. Cette distinction s'explique par l'interdiction d'effectuer des requêtes réseau dans le thread d'interface utilisateur lors du développement d'applications mobiles. Pour les autres interfaces, les exemples fournis privilégient les appels asynchrones.

  • Appel synchrone

    • Un appel d'interface synchrone bloque le thread jusqu'au renvoi d'un résultat.

    • N'appelez pas d'interfaces synchrones dans le thread d'interface utilisateur.

    • Lorsqu'une exception se produit lors d'un appel d'interface synchrone, une ClientException ou une ServiceException est directement levée. Une ClientException indique une exception locale, telle qu'un problème de connectivité réseau ou un paramètre invalide. Une ServiceException signale une erreur de service renvoyée par OSS, comme un échec d'authentification ou une erreur serveur.

  • Appel asynchrone

    • Pour une interface asynchrone, transmettez une fonction de rappel lors de la requête. Le résultat de la requête est traité dans ce rappel.

    • Lorsqu'une exception survient lors d'une requête asynchrone, elle est gérée dans la fonction de rappel.

    • L'appel d'une interface asynchrone renvoie directement une Task.

      OSSAsyncTask task = oss.asyncGetObejct(...);
      task.cancel(); // Cancel the task.
      task.waitUntilFinished(); // Wait until the task is complete.
      GetObjectResult result = task.getResult(); // Block the thread and wait for the result.