Inspecter le trafic réseau avec l'outil d'inspection de réseau

L'outil d'inspection de réseau affiche l'activité réseau en temps réel sur une chronologie, avec les données envoyées et reçues. Il vous permet de déterminer quand et comment votre application transfère des données et d'optimiser le code sous-jacent en conséquence.

Pour ouvrir l'outil d'inspection de réseau, procédez comme suit :

  1. Dans la barre de navigation d'Android Studio, sélectionnez View > Tool Windows > App Inspection (Affichage > Fenêtres d'outils > Inspection des applications). Une fois la connexion automatique établie entre la fenêtre d'inspection et un processus d'application, sélectionnez Network Inspector (Outil d'inspection de réseau) dans les onglets.
    • Si la fenêtre d'inspection des applications ne se connecte pas automatiquement à un processus d'application, vous devrez peut-être sélectionner un processus manuellement.
  2. Sélectionnez l'appareil et le processus d'application que vous souhaitez inspecter dans la fenêtre App Inspection (Inspection des applications).

Présentation de l'outil d'inspection de réseau

La chronologie de l'événement s'affiche en haut de la fenêtre de l'outil d'inspection de réseau. Cliquez dessus et faites glisser le curseur pour sélectionner une partie de la chronologie et inspecter le trafic.

Fenêtre de l'outil d'inspection de réseau
Figure 1. Fenêtre de l'outil d'inspection de réseau

Dans le volet des détails, le graphique temporel vous aide à identifier l'origine des problèmes de performance. Le début de la section en jaune correspond au premier octet de la requête envoyée. Le début de la section en bleu correspond au premier octet de la réponse reçue. La fin de la section en bleu correspond au dernier octet de la réponse reçue.

Dans le volet situé sous la chronologie, sélectionnez l'un des onglets suivants pour en savoir plus sur l'activité réseau durant la période sélectionnée :

  • Connection View (Vue de la connexion) : répertorie les fichiers envoyés ou reçus durant la période sélectionnée sur la chronologie sur l'ensemble des threads de processeur de votre application. Pour chaque requête, vous pouvez inspecter la taille, le type, l'état et la durée de la transmission. Pour trier cette liste, cliquez sur l'un des en-têtes de colonne. Vous pouvez également voir une vue détaillée de la période sélectionnée, qui indique quand chaque fichier a été envoyé ou reçu.
  • Thread View (Vue des threads) : affiche l'activité réseau sur chacun des threads du processeur de votre application. Comme le montre la figure 2, cette vue vous permet d'inspecter les threads qui sont responsables de chaque requête réseau.

    Inspection des requêtes réseau par thread d'application dans la vue des threads
    Figure 2. Inspection des requêtes réseau par thread d'application dans Thread View (Vue des threads)
  • Vue des règles : les règles permettent de tester le comportement de votre application face à des réponses comportant différents codes d'état, en-têtes et corps. Lorsque vous créez une règle, attribuez-lui un nom et incluez des informations sur l'origine de la réponse que vous souhaitez intercepter dans la sous-section Origine. Dans la sous-section Response (Réponse), vous pouvez spécifier où et comment modifier la réponse. Par exemple, vous pouvez définir la règle pour qu'elle s'exécute sur les réponses avec un code d'état spécifique et modifier ce code d'état. Dans les sous-sections Header rules (Règles des en-têtes) et Body rules (Règles des corps), créez des sous-règles qui ajoutent ou modifient des en-têtes ou des corps de réponse. Les règles sont appliquées dans l'ordre dans lequel elles sont listées. Choisissez la règle à activer ou à désactiver en cochant la case Active (Active) à côté de la règle.

    Volets Rules (Règles) et Rule Details (Détails des règles) de l'outil d'inspection du réseau
    Figure 3. Volets Rules (Règles) et Rule Details (Détails des règles) de l'outil d'inspection du réseau

Dans Connection View (Vue de la connexion) ou Thread View (Vue des threads), cliquez sur un nom de requête pour afficher des informations détaillées sur les données envoyées ou reçues. Cliquez sur les onglets pour afficher l'en-tête et le corps de la réponse, l'en-tête et le corps de la requête, ou la pile d'appel.

Dans les onglets Response (Réponse) et Request (Requête), cliquez sur le lien View Parsed (Afficher le texte analysé) pour afficher le texte mis en forme. Cliquez sur le lien Afficher la source pour afficher du texte brut.

Basculer entre le texte brut et le texte mis en forme
Figure 4. Basculer entre le texte brut et le texte mis en forme en cliquant sur le lien correspondant

En plus d'afficher les requêtes réseau pour HttpsURLConnection, l'outil d'inspection de réseau est aussi compatible avec OkHttp. Certaines bibliothèques réseau tierces, telles que Retrofit, utilisent OkHttp en interne. L'outil d'inspection de réseau vous permet donc d'inspecter leur activité réseau. L'application exemple Now in Android utilise OkHttp pour ses opérations réseau et permet de bien comprendre son fonctionnement.

Si vous utilisez l'API HttpsURLConnection, vous verrez les en-têtes de l'onglet Request (Requête) que vous incluez dans le code seulement si vous avez recours à la méthode setRequestProperty, comme illustré dans l'exemple suivant :

Kotlin

val url = URL(MY_URL_EN)
val urlConnection: HttpsURLConnection = url.openConnection() as HttpsURLConnection
...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity")

Java

URL url = new URL(MY_URL_EN);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity");

Résoudre les problèmes de connexion réseau

Si l'outil d'inspection de réseau détecte des valeurs de trafic, mais ne parvient pas à identifier les requêtes réseau compatibles, le message d'erreur suivant s'affiche :

**Network Inspector Data Unavailable:** There is no information for the
  network traffic you've selected.

Actuellement, l'outil d'inspection de réseau n'est compatible qu'avec les bibliothèques HttpsURLConnection et OkHttp pour les connexions réseau. Si votre application utilise une autre bibliothèque de connexion réseau, vous ne pourrez peut-être pas afficher votre activité réseau dans l'outil d'inspection de réseau. Si vous avez reçu ce message d'erreur, mais que votre application utilise HttpsURLConnection ou OkHttp, signalez un bug ou consultez l'outil Issue Tracker afin d'inclure vos commentaires dans un rapport existant concernant votre problème. Vous pouvez également vous servir de ces ressources pour demander la prise en charge d'autres bibliothèques.