在網路檢查器中查看網路流量

網路檢查器會根據時間軸列出即時網路活動,顯示收發的資料。透過網路檢查器,您可以查看應用程式轉移資料的方式和時間點,並適當改進基礎程式碼。

如要開啟網路檢查器,請按照下列步驟操作:

  1. 在 Android Studio 導覽列中,依序選取「View」>「Tool Windows」>「App Inspection」。在「App Inspection」視窗自動連線至應用程式程序後,從分頁中選取「Network Inspector」
    • 如果「App Inspection」視窗未自動連線至應用程式程序,您可能需要手動選取程序。
  2. 在「App Inspection」視窗中選取要檢查的裝置和應用程式程序。

網路檢查器總覽

「Network Inspector」視窗頂端會顯示活動時間軸。按住並拖曳即可選取時間軸的時段,並檢查流量。

「Network Inspector」視窗
圖 1:「Network Inspector」視窗。

詳細資料窗格中的時間圖表有助於找出可能發生效能問題的部分。黃色部分的開頭對應至所傳送要求的第一個位元組,藍色部分的開頭對應至所收到回應的第一個位元組,藍色部分的結尾則對應至所收到回應的最後一個位元組。

在時間軸下方的窗格中,選取下列任一分頁標籤,即可進一步瞭解時間軸中所選時段內的網路活動:

  • Connection View:列出應用程式所有 CPU 執行緒在時間軸中所選時段內傳送或接收的檔案。您可以檢查每項要求的大小、類型、狀態和傳輸時間。如要將這份清單排序,請點選任一欄標題。您也可以查看時間軸中所選時段的細目資料,當中會列出每個檔案的傳送或接收時間。
  • Thread View:顯示應用程式各 CPU 執行緒的網路活動。如圖 2 所示,這個檢視畫面可讓您查看負責處理每項網路要求的執行緒。

    在「Thread View」中依應用程式執行緒檢查網路要求
    圖 2:在「Thread View」中依應用程式執行緒檢查網路要求。
  • Rules View:規則可讓您測試遇到有不同狀態碼、標頭和內文的回應時,應用程式會有何種行為。建立新規則時,請為新規則命名,然後在「Origin」子區段下方加入您要攔截的回應來源相關資訊。您可以在「Response」子區段中指定修改回應的位置及方式。例如,您可以設定規則,執行含有特定狀態碼的回應,並修改該狀態碼。在「Header rules」和「Body rules」子區段中,建立子規則來新增或修改回應標頭或主體。系統會依照規則的列出順序進行套用。勾選規則旁的「Active」方塊,選擇要啟用或停用的規則。

    網路檢查器的「Rules」和「Rule Details」窗格
    圖 3. 網路檢查器的「Rules」和「Rule Details」窗格。

在「Connection View」或「Thread View」中按一下要求名稱,即可檢查所傳送或接收資料的詳細資訊。接著點選各分頁標籤,就能查看回應標頭與主體、要求標頭及主體,或是呼叫堆疊。

在「Response」和「Request」分頁中,按一下「View Parsed」連結即可顯示套用格式的文字,點選「View Source」連結則可顯示原始文字。

切換原始文字和套用格式的文字
圖 4. 點選對應連結即可切換原始文字和套用格式的文字。

除了顯示 HttpsURLConnection 的網路要求外,網路檢查器也支援 OkHttpRetrofit 等某些第三方網路程式庫會在內部使用 OkHttp,因此網路檢查器可讓您查看這些程式庫的網路活動。 Now In Android 範例應用程式 使用 OkHttp 執行網路作業,非常適合用來檢視 動作。

如果使用 HttpsURLConnection API,您只會在「Request」分頁中看到透過 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,您可以回報錯誤,也可以搜尋 Issue Tracker,在涉及自身問題的現有報表中提供錯誤相關資訊。此外,還能透過這些資源尋求有關其他程式庫的支援。