Ispeziona il traffico di rete con Network Inspector

Network Inspector mostra l'attività di rete in tempo reale su una sequenza temporale, mostrando i dati inviati e ricevuti. Network Inspector consente di esaminare come e quando la tua app trasferisce i dati e ottimizzare il codice sottostante in modo appropriato.

Per aprire Network Inspector, procedi nel seguente modo:

  1. Nella barra di navigazione di Android Studio, seleziona Visualizza > Finestre dello strumento > Controllo app. Dopo che la finestra di ispezione dell'app si connette automaticamente al processo di un'app, seleziona Network Inspector dalle schede.
    • Se la finestra di controllo dell'app non si connette automaticamente al processo di un'app, potresti dover selezionare manualmente un processo dell'app.
  2. Nella finestra Controllo app, seleziona il dispositivo e il processo dell'app che vuoi esaminare.

Panoramica di Network Inspector

Nella parte superiore della finestra Network Inspector puoi vedere la sequenza temporale degli eventi. Fai clic e trascina per selezionare una parte della sequenza temporale e ispezionare il traffico.

Finestra Network Inspector
Figura 1. La finestra Network Inspector.

Nel riquadro dei dettagli, il grafico delle tempistiche può aiutarti a identificare dove potrebbero verificarsi problemi di prestazioni. L'inizio della sezione gialla corrisponde al primo byte della richiesta inviata. L'inizio della sezione blu corrisponde al primo byte della risposta ricevuta. La fine della sezione blu corrisponde al byte finale della risposta ricevuta.

Nel riquadro sotto la sequenza temporale, seleziona una delle seguenti schede per ulteriori dettagli sull'attività di rete durante la parte selezionata della sequenza temporale:

  • Visualizzazione connessione: elenca i file inviati o ricevuti durante la parte selezionata della sequenza temporale in tutti i thread della CPU della tua app. Per ogni richiesta, puoi esaminare dimensioni, tipo, stato e durata di trasmissione. Per ordinare questo elenco, fai clic su una delle intestazioni di colonna. Puoi anche visualizzare un'analisi dettagliata della parte selezionata della sequenza temporale, che mostra quando ogni file è stato inviato o ricevuto.
  • Visualizzazione thread: mostra l'attività di rete su ciascun thread della CPU della tua app. Come mostrato nella Figura 2, questa visualizzazione consente di ispezionare i thread responsabili di ogni richiesta di rete.

    Ispeziona le richieste di rete per thread dell'app nella visualizzazione thread
    Figura 2. Ispeziona le richieste di rete in base ai thread dell'app nella visualizzazione Thread.
  • Visualizzazione regole: le regole consentono di verificare il comportamento della tua app quando incontra risposte con codici di stato, intestazioni e corpo diversi. Quando crei una nuova regola, assegna un nome alla nuova regola e includi informazioni sull'origine della risposta che vuoi intercettare nella sottosezione Origine. Nella sottosezione Risposta, puoi specificare dove e come modificare la risposta. Ad esempio, puoi impostare la regola in modo che venga eseguita per le risposte con un codice di stato specifico e modificare tale codice. Nelle sottosezioni Regole delle intestazioni e Regole del corpo, crea regole secondarie che aggiungono o modificano intestazioni o corpi delle risposte. Le regole vengono applicate nell'ordine in cui sono elencate. Scegli la regola da attivare o disattivare selezionando la casella Attiva accanto alla regola.

    Riquadri delle regole di Network Inspector e dei dettagli delle regole
    Figura 3. Riquadri Regole e Dettagli regola di Network Inspector.

In Visualizzazione connessione o Visualizzazione thread, fai clic sul nome di una richiesta per controllare le informazioni dettagliate sui dati inviati o ricevuti. Fai clic sulle schede per visualizzare l'intestazione e il corpo della risposta, l'intestazione e il corpo della richiesta o lo stack di chiamate.

Nelle schede Risposta e Richiesta, fai clic sul link Visualizza analizzato per visualizzare il testo formattato. Fai clic sul link Visualizza sorgente per visualizzare il testo non elaborato.

Passa dal testo non elaborato al testo formattato e viceversa
Figura 4. Passa dal testo non elaborato a quello formattato e viceversa, facendo clic sul link corrispondente.

Oltre a mostrare le richieste di rete per HttpsURLConnection, Network Inspectoror supporta anche OkHttp. Alcune librerie di rete di terze parti, come Retrofit, utilizzano OkHttp internamente, quindi Network Inspector consente di ispezionare la loro attività di rete. L'app di esempio Ora in Android utilizza OkHttp per le operazioni di rete ed è ideale per vederla in azione.

Se utilizzi l'API HttpsURLConnection, nella scheda Richiesta vengono visualizzate solo le intestazioni che includi nel codice utilizzando il metodo setRequestProperty, come mostrato nel seguente esempio:

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");

Risolvere i problemi relativi alla connessione di rete

Se Network Inspector rileva i valori del traffico ma non riesce a identificare le richieste di rete supportate, viene visualizzato il seguente messaggio di errore:

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

Attualmente, Network Inspector supporta solo le librerie HttpsURLConnection e OkHttp per le connessioni di rete. Se la tua app usa un'altra libreria di connessioni di rete, potresti non riuscire a visualizzare la tua attività di rete in Network Inspector. Se hai ricevuto questo messaggio di errore, ma la tua app utilizza HttpsURLConnection o OkHttp, segnala un bug o cerca nel tracker problemi per includere il tuo feedback in una segnalazione esistente relativa al problema. Puoi utilizzare queste risorse anche per richiedere assistenza per librerie aggiuntive.