使用网络检查器检查网络流量

网络检查器在时间轴上显示实时网络活动,显示发送和接收的数据。网络检查器允许您检查应用如何以及何时传输数据,并相应地优化底层代码。

要打开网络检查器,请按照以下步骤操作

  1. 在 Android Studio 导航栏中,选择**查看 > 工具窗口 > 应用检查**。应用检查窗口自动连接到应用进程后,从选项卡中选择**网络检查器**。
    • 如果应用检查窗口未自动连接到应用进程,您可能需要手动选择应用进程。
  2. 从**应用检查**窗口中选择要检查的设备和应用进程。

网络检查器概述

在网络检查器窗口的顶部,您可以看到事件时间线。单击并拖动以选择时间线的一部分并检查流量。

The Network Inspector window
图 1. 网络检查器窗口。

在详细信息窗格中,时间图可以帮助您识别可能出现性能问题的位置。黄色部分的开始对应于发送请求的第一个字节。蓝色部分的开始对应于接收响应的第一个字节。蓝色部分的结束对应于接收响应的最后一个字节。

在时间线下方的窗格中,选择以下选项卡之一以获取有关时间线所选部分期间网络活动的更多详细信息

  • 连接视图:列出在时间线所选部分期间通过应用所有 CPU 线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输持续时间。要对该列表进行排序,请单击任何列标题。您还可以看到时间线所选部分的详细细分,显示每个文件何时发送或接收。
  • 线程视图:显示应用每个 CPU 线程上的网络活动。如图 2 所示,此视图允许您检查哪些线程负责每个网络请求。

    Inspect network requests by app thread in the thread view
    图 2.线程视图中按应用线程检查网络请求。
  • 规则视图:规则有助于测试应用在遇到具有不同状态代码、标头和正文的响应时的行为。创建新规则时,请为新规则命名,并在来源子部分中包含有关要拦截的响应来源的信息。在响应子部分中,您可以指定修改响应的位置和方式。例如,您可以将规则设置为对具有特定状态代码的响应执行,并修改该状态代码。在标头规则正文规则子部分中,创建添加或修改响应标头或正文的子规则。规则按其列出的顺序应用。通过选中规则旁边的活动框,选择要启用或禁用的规则。

    Network Inspector Rules and Rule Details panes
    图 3. 网络检查器规则规则详细信息窗格。

连接视图线程视图中,单击请求名称以检查有关发送或接收的数据的详细信息。单击选项卡以查看响应标头和正文、请求标头和正文或调用堆栈。

响应请求选项卡上,单击查看解析链接以显示格式化文本。单击查看源代码链接以显示原始文本。

Toggle between raw text and formatted text
图 4. 通过单击相应的链接在原始文本和格式化文本之间切换。

除了显示HttpsURLConnection的网络请求外,网络检查器还支持OkHttp。某些第三方网络库(例如Retrofit)在内部使用OkHttp,因此网络检查器允许您检查其网络活动。Now In Android 示例应用使用OkHttp进行其网络操作,并且是了解其工作原理的好地方。

如果您使用的是HttpsURLConnection API,则您只会在请求选项卡中看到代码中使用setRequestProperty方法包含的标头,如下面的示例所示

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

排查网络连接问题

如果网络检查器检测到流量值但无法识别任何受支持的网络请求,您将收到以下错误消息

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

目前,网络检查器仅支持HttpsURLConnectionOkHttp库用于网络连接。如果您的应用使用其他网络连接库,您可能无法在网络检查器中查看您的网络活动。如果您已收到此错误消息但您的应用确实使用了HttpsURLConnectionOkHttp,请报告错误搜索问题跟踪器,以将您的反馈包含在与您的问题相关的现有报告中。您还可以使用这些资源请求对其他库的支持。