بازرسی ترافیک شبکه با «بازرس شبکه»

«بازرس شبکه» فعالیت شبکه را به‌طور هم‌زمان در خط زمان نمایش می‌دهد و داده‌های ارسال‌شده و دریافت‌شده را نشان می‌دهد. «بازرس شبکه» به شما امکان می‌دهد نحوه و زمان انتقال داده‌ها توسط برنامه‌تان را بررسی کنید و کد زیربنایی را به‌طور مناسب بهینه‌سازی کنید.

برای باز کردن «بازرس شبکه»، این مراحل را دنبال کنید:

  1. از نوار پیمایش «استودیو Android»، مشاهده > پنجره‌های ابزار > بازرسی برنامه را انتخاب کنید. پس‌از اینکه پنجره بازرسی برنامه به‌طور خودکار به فرایند برنامه متصل شد، بازرس شبکه را از برگه انتخاب کنید.
    • اگر پنجره بازرسی برنامه به‌طور خودکار به فرایند برنامه متصل نشود، ممکن است لازم باشد فرایند برنامه را به‌صورت دستی انتخاب کنید.
  2. دستگاه و فرایند برنامه‌ای را که می‌خواهید بازرسی کنید از پنجره بازرسی برنامه انتخاب کنید.

نمای کلی «بازرس شبکه»

در بالای پنجره «بازرس شبکه»، می‌توانید خط زمان رویداد را ببینید. برای انتخاب بخشی از خط زمان و بررسی ترافیک، کلیک کنید و بکشید.

پنجره «بازرس شبکه»
شکل ۱. پنجره «بازرس شبکه».

در بخش جزئیات، نمودار زمان‌بندی می‌تواند به شما کمک کند تا محل وقوع مشکلات عملکرد را شناسایی کنید. شروع بخش زرد مربوط به اولین بایت درخواست است که ارسال می‌شود. شروع بخش آبی با اولین بایت پاسخ دریافتی مطابقت دارد. پایان بخش آبی با دریافت آخرین بایت پاسخ مطابقت دارد.

در قاب زیر خط زمان، یکی از زبانه‌های زیر را انتخاب کنید تا جزئیات بیشتری درباره فعالیت شبکه درطول بخش انتخاب‌شده از خط زمان ببینید:

  • نمای اتصال: فایل‌هایی را که درطول بخش انتخاب‌شده از خط زمان در همه رشته‌های CPU برنامه شما ارسال یا دریافت شده‌اند فهرست می‌کند. برای هر درخواست، می‌توانید اندازه، نوع، وضعیت، و مدت انتقال را بررسی کنید. برای مرتب کردن این فهرست، روی هرکدام از سرصفحه‌های ستون کلیک کنید. همچنین می‌توانید تفکیک جزئیات بخش انتخاب‌شده از خط زمان را ببینید، که نشان می‌دهد هر فایل چه زمانی ارسال یا دریافت شده است.
  • نمای رشته‌ای: فعالیت شبکه را در هریک از رشته‌های واحد پردازش مرکزی برنامه‌تان نمایش می‌دهد. همان‌طور که در شکل ۲ نشان داده شده است، این نما به شما امکان می‌دهد بررسی کنید که کدام رشته‌ها مسئول هر درخواست شبکه هستند.

    بازرسی درخواست‌های شبکه براساس رشته برنامه در نمای رشته
    شکل ۲. درخواست‌های شبکه را براساس رشته برنامه در نمای رشته بازرسی کنید.
  • نمای قوانین: قوانین کمک می‌کنند تا نحوه رفتار برنامه‌تان را هنگام مواجه شدن با پاسخ‌هایی با کد وضعیت، سرصفحه، و بدنه متفاوت آزمایش کنید. وقتی قانون جدیدی ایجاد می‌کنید، نامی برای آن انتخاب کنید و اطلاعات مربوط به منبع پاسخی را که می‌خواهید رهگیری کنید در بخش فرعی منبع وارد کنید. در بخش فرعی پاسخ، می‌توانید مشخص کنید که پاسخ کجا و چگونه اصلاح شود. برای مثال، می‌توانید قانون را طوری تنظیم کنید که روی پاسخ‌هایی با رمز وضعیت خاص اجرا شود و همچنین آن رمز وضعیت را اصلاح کند. در بخش‌های فرعی قوانین سرصفحه و قوانین بدنه، زیرقوانینی ایجاد کنید که سرصفحه‌ها یا بدنه‌های پاسخ را اضافه یا اصلاح کنند. قوانین براساس ترتیبی که فهرست شده‌اند اعمال می‌شوند. با علامت زدن چارگوش فعال در کنار قانون، انتخاب کنید کدام قانون فعال یا غیرفعال شود.

    پانل‌های «قوانین بازرس شبکه» و «جزئیات قانون»
    شکل ۳. بخش‌های قوانین و جزئیات قانون «بازرس شبکه».

از نمای اتصال یا نمای رشته، روی نام درخواست کلیک کنید تا اطلاعات دقیق درباره داده‌های ارسال‌شده یا دریافت‌شده را بررسی کنید. روی برگه‌ها کلیک کنید تا سرایند و بدنه پاسخ، سرایند و بدنه درخواست، یا پشته فراخوانی را مشاهده کنید.

در زبانه‌های پاسخ و درخواست، روی پیوند مشاهده تجزیه‌شده کلیک کنید تا نوشتار قالب‌بندی‌شده نمایش داده شود. برای نمایش نوشتار خام، روی پیوند مشاهده منبع کلیک کنید.

جابه‌جایی بین نوشتار خام و نوشتار قالب‌بندی‌شده
شکل ۴. با کلیک کردن روی پیوند مربوطه، بین نوشتار خام و نوشتار قالب‌بندی‌شده جابه‌جا شوید.

علاوه‌بر نمایش درخواست‌های شبکه برای HttpsURLConnection، «بازرس شبکه» از OkHttp نیز پشتیبانی می‌کند. برخی‌از کتابخانه‌های شبکه طرف سوم، مثل Retrofit، از OkHttp به‌صورت داخلی استفاده می‌کنند، بنابراین «بازرس شبکه» به شما امکان می‌دهد فعالیت شبکه آن‌ها را بازرسی کنید. برنامه نمونه Now In Android از OkHttp برای عملیات شبکه خود استفاده می‌کند و مکان خوبی برای دیدن آن در عمل است.

اگر از HttpsURLConnection API استفاده می‌کنید، فقط سرصفحه‌هایی را در برگه درخواست می‌بینید که بااستفاده از روش setRequestProperty در کدتان گنجانده‌اید، همان‌طور که در نمونه زیر نشان داده شده است:

کاتلین

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

جاوا

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.

درحال‌حاضر، «بازرس شبکه» فقط از کتابخانه‌های HttpsURLConnection و OkHttp برای اتصالات شبکه پشتیبانی می‌کند. اگر برنامه‌تان از کتابخانه اتصال شبکه دیگری استفاده می‌کند، ممکن است نتوانید فعالیت شبکه‌تان را در «بازرس شبکه» مشاهده کنید. اگر این پیام خطا را دریافت کرده‌اید اما برنامه‌تان از HttpsURLConnection یا OkHttp استفاده می‌کند، اشکالی را گزارش کنید یا ردیاب مشکل را جستجو کنید تا بازخوردتان را در گزارش موجود مربوط به مشکلتان اضافه کنید. همچنین می‌توانید از این منابع برای درخواست پشتیبانی برای کتابخانه‌های دیگر استفاده کنید.