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

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

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

  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,请报告错误搜索问题跟踪器,以将您的反馈包含在与您的问题相关的现有报告中。您还可以使用这些资源来请求对其他库的支持。