Cómo inspeccionar el tráfico de red con el Inspector de red

El Inspector de red muestra actividad de red en tiempo real en un cronograma que incluye la cantidad de datos enviados y recibidos. El Inspector de red te permite examinar la manera y el momento en que tu app transfiere datos, además de optimizar el código subyacente de manera correcta.

Para abrir el Inspector de redes, sigue estos pasos:

  1. En la barra de navegación de Android Studio, selecciona View > Tool Windows > App Inspection. Después de que la ventana de inspección de apps se conecte automáticamente a un proceso de la app, selecciona Network Inspector en las pestañas.
    • Si la ventana de inspección de apps no se conecta a un proceso de la app automáticamente, es posible que debas seleccionar este proceso de forma manual.
  2. En la ventana App Inspection, selecciona el dispositivo y el proceso de la app que desees inspeccionar.

Descripción general del Inspector de red

En la parte superior de la ventana del Inspector de red, puedes ver el cronograma de eventos. Haz clic y arrastra para seleccionar una parte del cronograma e inspeccionar el tráfico.

Ventana del Inspector de red
Figura 1: Ventana del Inspector de red

En el panel de detalles, el gráfico de tiempo puede ayudarte a identificar dónde podrían estar ocurriendo problemas de rendimiento. El inicio de la sección amarilla corresponde al primer byte de la solicitud que se envía. El inicio de la sección azul corresponde al primer byte de la respuesta que se recibe. El final de la sección azul corresponde al último byte de la respuesta que se recibe.

En el panel que aparece debajo del cronograma, elige una de las siguientes pestañas para obtener más detalles sobre la actividad de la red durante la parte seleccionada del cronograma:

  • Connection View: Muestra los archivos que se enviaron o recibieron durante la parte seleccionada del cronograma en todos los subprocesos de la CPU de tu app. En cada solicitud, puedes inspeccionar el tamaño, el tipo, el estado y la duración de la transmisión. Para ordenar esta lista, haz clic en cualquiera de los encabezados de las columnas. También puedes ver un desglose detallado de la parte seleccionada del cronograma que mostrará el momento en que se envió o se recibió cada archivo.
  • Thread View: Muestra la actividad de red en cada uno de los subprocesos de CPU de la app. Como se muestra en la figura 2, esta vista te permite inspeccionar qué subprocesos son responsables de cada solicitud de red.

    Cómo inspeccionar solicitudes de red por subproceso de la app en Thread View
    Figura 2: Inspección de solicitudes de red por subproceso de la app en Thread View
  • Vista de Rules: Las reglas ayudan a probar el comportamiento de tu app cuando se encuentran respuestas con diferentes códigos de estado, encabezados y cuerpos. Cuando crees una regla nueva, asígnale un nombre e incluye información sobre el origen de la respuesta que quieras interceptar en la subsección Origin. En la subsección Response, podrás especificar dónde y cómo modificar la respuesta. Por ejemplo, puedes configurar la regla para que se ejecute en respuestas con un código de estado específico o modificar ese código de estado. En las subsecciones Header rules y Body rules, crea subreglas que agreguen o modifiquen encabezados o cuerpos de respuesta. Las reglas se aplicarán en el orden en que se enumeren. Para elegir qué regla habilitar o inhabilitar, marca la casilla Active junto a la regla.

    Paneles Rules y Rule Details del Inspector de red
    Figura 3: Paneles Rules y Rule Details del Inspector de red.

Desde Connection View o Thread View, haz clic en el nombre de una solicitud para obtener información detallada sobre los datos enviados o recibidos. Haz clic en las pestañas para ver el encabezado y el cuerpo de la respuesta, el encabezado y el cuerpo de la solicitud, o la pila de llamadas.

En las pestañas Response y Request, haz clic en el vínculo View Parsed para mostrar el texto con formato y en View Source para mostrar el que no lo tiene.

Alterna entre texto sin formato y texto con formato
Figura 4: Haz clic en el vínculo correspondiente para alternar entre texto sin formato y texto con formato.

Además de mostrar las solicitudes de red para HttpsURLConnection, el Inspector de red también admite OkHttp. Algunas bibliotecas de red de terceros, como Retrofit, usan OkHttp de forma interna, por lo que el Inspector de red te permite inspeccionar su actividad de red. El App de ejemplo Now In Android usa OkHttp para sus operaciones de red y es un buen lugar para verlo en acción.

Si usas la API de HttpsURLConnection, solo verás los encabezados en la pestaña Request que incluyas en el código mediante el método setRequestProperty, como se muestra en el siguiente ejemplo:

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

Cómo solucionar problemas de conexión de red

Si el Inspector de red detecta valores de tráfico, pero no puede identificar solicitudes de red admitidas, verás el siguiente mensaje de error:

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

Actualmente, el Inspector de red solo admite las bibliotecas HttpsURLConnection y OkHttp para las conexiones de red. Si tu app usa otra, es posible que no veas tu actividad de red en el Inspector de red. Si recibiste este mensaje de error, pero la app usa HttpsURLConnection o OkHttp, informa un error o realiza una búsqueda en la herramienta de seguimiento de errores para incluir tus comentarios en un informe existente relacionado con el problema. También puedes usar estos recursos para solicitar asistencia para otras bibliotecas.