Tutoriel : Appeler une API Web protégée dans l'application Android (Kotlin)
Il s'agit du quatrième didacticiel de la série de didacticiels qui vous guide dans l'appel d'une API Web protégée à l'aide de l'ID externe Microsoft Entra.
Dans ce didacticiel, vous allez :
- Appeler une API web protégée
Prérequis
Tutoriel : Connecter les utilisateurs dans l'application mobile Android (Kotlin)
Une inscription d’API qui expose au moins une étendue (autorisations déléguées) et un rôle d’application (autorisation d’application) tel que ToDoList.Read. Si ce n’est déjà fait, suivez les instructions pour appeler une API dans un exemple d’application mobile Android pour avoir une API web ASP.NET Core protégée fonctionnelle. Veillez à effectuer les étapes suivantes :
- Inscrire une application d’API web
- Configurer des étendues d’API
- Configurer les rôles d’application
- Configurer des revendications facultatives
- Cloner ou télécharger l’exemple d’API web
- Configurer et exécuter un exemple d’API web
Appeler une API
Pour appeler une API Web depuis une application Android pour accéder à des données ou à des services externes, commencez par créer un objet compagnon dans votre classe
MainActivity
. L’objet complémentaire doit inclure le code suivant :companion object { private const val WEB_API_BASE_URL = "" // Developers should set the respective URL of their web API here private const val scopes = "" // Developers should append the respective scopes of their web API. }
L'objet compagnon définit deux constantes privées :
WEB_API_BASE_URL
, où les développeurs définissent l'URL de leur API Web, etscopes
, où les développeurs ajoutent le respectifscopes
de leur API Web.Pour gérer le processus d’accès à une API web, utilisez le code suivant :
private fun accessWebApi() { CoroutineScope(Dispatchers.Main).launch { binding.txtLog.text = "" try { if (WEB_API_BASE_URL.isBlank()) { Toast.makeText(this@MainActivity, getString(R.string.message_web_base_url), Toast.LENGTH_LONG).show() return@launch } val apiResponse = withContext(Dispatchers.IO) { ApiClient.performGetApiRequest(WEB_API_BASE_URL, accessToken) } binding.txtLog.text = getString(R.string.log_web_api_response) + apiResponse.toString() } catch (exception: Exception) { Log.d(TAG, "Exception while accessing web API: $exception") binding.txtLog.text = getString(R.string.exception_web_api) + exception } } }
Le code lance une coroutine dans le répartiteur principal. Elle commence par effacer le journal de texte. Ensuite, il vérifie si l’URL de base de l’API web est vide ; le cas échéant, il affiche un message toast et retourne. Ensuite, il effectue une requête GET à l’API web à l’aide du jeton d’accès fourni dans un thread d’arrière-plan.
Après avoir reçu la réponse de l’API, elle met à jour le journal texte avec le contenu de la réponse. Si une exception se produit pendant ce processus, elle enregistre l’exception et met à jour le journal texte avec le message d’erreur correspondant.
Dans le code, où nous spécifions notre rappel, nous utilisons une fonction appelée
performGetApiRequest()
. La fonction doit avoir le code suivant :object ApiClient { private val client = OkHttpClient() fun performGetApiRequest(WEB_API_BASE_URL: String, accessToken: String?): Response { val fullUrl = "$WEB_API_BASE_URL/api/todolist" val requestBuilder = Request.Builder() .url(fullUrl) .addHeader("Authorization", "Bearer $accessToken") .get() val request = requestBuilder.build() client.newCall(request).execute().use { response -> return response } } }
Le code facilite l’exécution de requêtes
GET
à une API web. La méthode principale estperformGetApiRequest()
, qui prend l’URL de base de l’API web et un jeton d’accès en tant que paramètres. Dans cette méthode, elle construit une URL complète en ajoutant/api/todolist
à l’URL de base. Ensuite, il génère une requête HTTP avec les en-têtes appropriés, y compris l’en-tête d’autorisation avec le jeton d’accès.Enfin, il exécute la requête de manière synchrone à l'aide de la méthode OkHttp
newCall()
et renvoie la réponse. L’objetApiClient
gère une instance deOkHttpClient
pour gérer les requêtes HTTP. Pour utiliserOkHttpClient
, vous devez ajouter laimplementation 'com.squareup.okhttp3:okhttp:4.9.0'
de dépendance à votre fichier Android Gradle.Veillez à inclure les instructions import. Android Studio doit inclure automatiquement les instructions import.
Contenu connexe
- Connectez les utilisateurs et appelez une API Web protégée dans un exemple d'application Android (Kotlin)
- Connectez les utilisateurs dans un exemple d'application mobile Android (Kotlin) à l'aide de l'authentification native
- Tutoriel : Préparer votre application mobile Android pour l'authentification native