Badanie ruchu w sieci przy użyciu inspektora sieci

Inspektor sieci wyświetla na osi czasu aktywność w sieci w czasie rzeczywistym, pokazując dane wysłane i odebrane. Inspektor sieci pozwala sprawdzić, jak i kiedy aplikacja przesyła dane, i odpowiednio zoptymalizować kod bazowy.

Aby otworzyć Inspektora sieci, wykonaj te czynności:

  1. Na pasku nawigacyjnym Android Studio wybierz Widok > Okna narzędzi > Sprawdzanie aplikacji. Gdy okno inspekcji aplikacji automatycznie połączy się z procesem aplikacji, na kartach wybierz Inspektor sieci.
    • Jeśli okno inspekcji aplikacji nie połączy się automatycznie z procesem aplikacji, być może trzeba będzie ręcznie wybrać proces aplikacji.
  2. W oknie Inspekcji aplikacji wybierz urządzenie i proces aplikacji, które chcesz sprawdzić.

Omówienie inspektora sieci

U góry okna Inspektora sieci możesz zobaczyć oś czasu zdarzenia. Kliknij i przeciągnij, aby zaznaczyć fragment osi czasu i sprawdzić natężenie ruchu.

Okno Inspektora sieci
Rysunek 1. Okno Inspektora sieci.

Wykres czasu w panelu szczegółów pomoże Ci znaleźć miejsca, w których mogą występować problemy ze skutecznością. Początek żółtej sekcji odpowiada pierwszemu bajtowi wysyłanego żądania. Początek niebieskiej sekcji odpowiada pierwszemu bajtowi otrzymanej odpowiedzi. Koniec niebieskiej sekcji odpowiada ostatnim bajtowi otrzymanej odpowiedzi.

W panelu pod osią czasu wybierz jedną z poniższych kart, aby wyświetlić więcej informacji o aktywności sieci w wybranym fragmencie osi czasu:

  • Widok połączenia: zawiera listę plików wysłanych lub odebranych w wybranym fragmencie osi czasu we wszystkich wątkach procesora aplikacji. W przypadku każdego żądania możesz sprawdzić rozmiar, typ, stan i czas trwania transmisji. Aby posortować tę listę, kliknij dowolny nagłówek kolumny. Możesz też wyświetlić szczegółowe zestawienie wybranego fragmentu osi czasu obejmujące informacje o tym, kiedy każdy plik został wysłany lub odebrany.
  • Widok wątku: wyświetla aktywność sieciową w każdym wątku procesora aplikacji. Jak widać na ilustracji 2, ten widok pozwala sprawdzić, które wątki są odpowiedzialne za każde żądanie sieciowe.

    Sprawdzaj żądania sieciowe według wątku aplikacji w widoku wątku
    Rysunek 2. Żądania sieciowe możesz sprawdzać w widoku wątku według wątku aplikacji.
  • Widok reguł: reguły pomagają sprawdzać, jak zachowuje się aplikacja w przypadku napotkania odpowiedzi z różnymi kodami stanu, nagłówkami i treścią. Gdy tworzysz nową regułę, nadaj jej nazwę i w podsekcji Źródło podaj informacje o pochodzeniu odpowiedzi, którą chcesz przechwycić. W podsekcji Odpowiedź możesz określić, gdzie i jak chcesz zmodyfikować odpowiedź. Możesz na przykład ustawić regułę tak, aby była uruchamiana w przypadku odpowiedzi o konkretnym kodzie stanu, a także aby modyfikować ten kod stanu. W podsekcjach Reguły nagłówka i Reguły treści utwórz reguły podrzędne, które dodają lub modyfikują nagłówki lub treści odpowiedzi. Reguły są stosowane w kolejności, w jakiej są wymienione. Wybierz regułę, którą chcesz włączyć lub wyłączyć, zaznaczając obok niej pole Aktywna.

    Okienko reguł i szczegółów reguł inspektora sieci
    Rysunek 3. Okienko Reguły i Szczegóły reguł w inspektorze sieci.

W widoku połączenia lub widoku wątku kliknij nazwę żądania, aby zobaczyć szczegółowe informacje o wysyłanych lub odbieranych danych. Klikaj karty, aby wyświetlić nagłówek i treść odpowiedzi, nagłówek i treść żądania lub stos wywołań.

Na kartach Response (Odpowiedź) i Request (Żądanie) kliknij link View Parsed (Wyświetl przeanalizowane), aby wyświetlić sformatowany tekst. Aby wyświetlić nieprzetworzony tekst, kliknij link Wyświetl źródło.

Przełączanie między nieprzetworzonym a sformatowanym tekstem
Rysunek 4. Aby przełączać się między nieprzetworzonym a sformatowanym tekstem, kliknij odpowiedni link.

Oprócz wyświetlania żądań sieciowych HttpsURLConnection Inspektor sieci obsługuje też OkHttp. Niektóre biblioteki sieciowe innych firm, np. Retrofit, używają wewnętrznie OkHttp, więc Network Inspector umożliwia sprawdzanie ich aktywności sieciowej. Przykładowa aplikacja Now In na Androida wykorzystuje OkHttp do operacji sieciowych i jest świetnym miejscem, aby zobaczyć, jak to wygląda w praktyce.

Jeśli korzystasz z interfejsu API HttpsURLConnection, na karcie Żądanie zobaczysz tylko nagłówki dodane do kodu za pomocą metody setRequestProperty, jak pokazano w tym przykładzie:

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

Rozwiązywanie problemów z połączeniem sieciowym

Jeśli inspektor sieci wykryje wartości ruchu, ale nie będzie w stanie zidentyfikować żadnych obsługiwanych żądań sieciowych, pojawi się ten komunikat o błędzie:

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

Obecnie Inspektor sieci obsługuje tylko biblioteki HttpsURLConnection i OkHttp na potrzeby połączeń sieciowych. Jeśli Twoja aplikacja używa innej biblioteki połączeń sieciowych, możesz nie być w stanie wyświetlić aktywności w sieci w Inspektorze sieci. Jeśli pojawił się ten komunikat o błędzie, ale Twoja aplikacja korzysta z HttpsURLConnection lub OkHttp, zgłoś błąd albo wyszukaj narzędzie do śledzenia problemów, aby uwzględnić swoją opinię w istniejącym raporcie dotyczącym danego problemu. Możesz też użyć tych zasobów, aby poprosić o pomoc dotyczącą dodatkowych bibliotek.