নেটওয়ার্ক ইন্সপেক্টরের সাহায্যে নেটওয়ার্ক ট্রাফিক ইন্সপেক্ট করুন

নেটওয়ার্ক ইন্সপেক্টর টাইমলাইনে রিয়েল-টাইম নেটওয়ার্ক অ্যাক্টিভিটি দেখায়, যার মধ্যে পাঠানো ও পাওয়া ডেটা অন্তর্ভুক্ত। নেটওয়ার্ক ইন্সপেক্টর আপনাকে পরীক্ষা করতে দেয় যে কীভাবে এবং কখন আপনার অ্যাপ ডেটা ট্রান্সফার করে এবং সেই অনুযায়ী অন্তর্নিহিত কোড অপ্টিমাইজ করে।

নেটওয়ার্ক ইন্সপেক্টর খুলতে, এইসব ধাপ অনুসরণ করুন:

  1. Android Studio নেভিগেশন বার থেকে, View > টুল উইন্ডো > অ্যাপ ইন্সপেকশন বিকল্প বেছে নিন। অ্যাপ ইন্সপেকশন উইন্ডো অটোমেটিক কোনও অ্যাপ প্রসেসের সাথে কানেক্ট হওয়ার পরে, ট্যাব থেকে নেটওয়ার্ক ইন্সপেক্টর বেছে নিন।
    • অ্যাপ ইন্সপেকশন উইন্ডো অটোমেটিক কোনও অ্যাপ প্রসেসের সাথে কানেক্ট না হলে, আপনাকে ম্যানুয়ালি কোনও অ্যাপ প্রসেস বেছে নিতে হতে পারে।
  2. অ্যাপ ইন্সপেকশন উইন্ডো থেকে আপনি যে ডিভাইস ও অ্যাপ প্রসেস ইন্সপেক্ট করতে চান সেটি বেছে নিন।

এক নজরে নেটওয়ার্ক ইন্সপেক্টর

নেটওয়ার্ক ইন্সপেক্টর উইন্ডোর সবচেয়ে উপরে, আপনি ইভেন্ট টাইমলাইন দেখতে পাবেন। টাইমলাইনের কোনও অংশ বেছে নিতে ক্লিক করে টেনে আনুন এবং ট্রাফিক পরীক্ষা করুন।

নেটওয়ার্ক ইন্সপেক্টর উইন্ডো
ছবি ১. নেটওয়ার্ক ইন্সপেক্টর উইন্ডো।

বিবরণ প্যানে, টাইমিং গ্রাফ আপনাকে পারফর্ম্যান্স সংক্রান্ত সমস্যা কোথায় হচ্ছে তা শনাক্ত করতে সাহায্য করতে পারে। হলুদ অংশের শুরু থেকে অনুরোধের প্রথম বাইট পাঠানো হচ্ছে। নীল অংশের শুরু থেকে প্রথম বাইট পর্যন্ত রেসপন্স পাওয়া গেছে। নীল অংশের শেষ দিকটি উত্তর পাওয়ার শেষ বাইটকে নির্দেশ করে।

টাইমলাইনের নিচে প্যানে, টাইমলাইনের বেছে নেওয়া অংশের সময় নেটওয়ার্ক অ্যাক্টিভিটি সম্পর্কে আরও বিশদ বিবরণের জন্য নিম্নলিখিত ট্যাবগুলির মধ্যে একটি বেছে নিন:

  • কানেকশন ভিউ: আপনার অ্যাপের সব CPU থ্রেড জুড়ে টাইমলাইনের বেছে নেওয়া অংশে পাঠানো বা পাওয়া ফাইলের তালিকা দেখায়। প্রতিটি অনুরোধের জন্য, আপনি সাইজ, ধরন, স্ট্যাটাস এবং ট্রান্সমিশনের সময়কাল পরীক্ষা করতে পারেন। এই তালিকা সাজাতে, যেকোনও কলামের হেডারে ক্লিক করুন। এছাড়াও, আপনি টাইমলাইনের বেছে নেওয়া অংশের বিস্তারিত ব্রেকডাউন দেখতে পাবেন, যেখানে প্রতিটি ফাইল কখন পাঠানো বা রিসিভ করা হয়েছে তা দেখানো হয়।
  • থ্রেড ভিউ: আপনার অ্যাপের প্রতিটি সিপিইউ থ্রেডে নেটওয়ার্ক অ্যাক্টিভিটি দেখায়। ছবি ২-এ যেমন দেখানো হয়েছে, এই ভিউ আপনাকে প্রতিটি নেটওয়ার্ক অনুরোধের জন্য কোন থ্রেড দায়ী তা পরীক্ষা করতে দেয়।

    থ্রেড ভিউতে অ্যাপ থ্রেড অনুযায়ী নেটওয়ার্ক অনুরোধ পরীক্ষা করুন
    ছবি ২. থ্রেড ভিউ-এ অ্যাপ থ্রেড অনুযায়ী নেটওয়ার্ক অনুরোধ পরীক্ষা করুন।
  • নিয়ম ভিউ: বিভিন্ন স্ট্যাটাস কোড, হেডার ও বডি সহ রেসপন্স পেলে আপনার অ্যাপ কেমন আচরণ করে তা পরীক্ষা করতে নিয়ম সাহায্য করে। আপনি নতুন নিয়ম তৈরি করার সময়, নতুন নিয়মের নাম দিন এবং উৎস সাবসেকশনের অধীনে আপনি যে উত্তর ইন্টারসেপ্ট করতে চান তার উৎসের ব্যাপারে তথ্য অন্তর্ভুক্ত করুন। উত্তর সাবসেকশনে, আপনি উত্তরটি কোথায় এবং কীভাবে পরিবর্তন করতে হবে তা নির্দিষ্ট করতে পারেন। যেমন, আপনি নির্দিষ্ট স্ট্যাটাস কোড সহ উত্তরে কার্যকর করার জন্য নিয়ম সেট করতে পারেন এবং সেই স্ট্যাটাস কোড পরিবর্তন করতে পারেন। হেডার রুল এবং বডি রুল সাবসেকশনে, সাব-রুল তৈরি করুন যা রেসপন্স হেডার বা বডি যোগ বা পরিবর্তন করে। নিয়মগুলি যে ক্রমে তালিকাভুক্ত করা হয়েছে, সেই ক্রমেই প্রয়োগ করা হয়। নিয়মের পাশে থাকা অ্যাক্টিভ বক্সে টিকচিহ্ন দিয়ে কোন নিয়ম চালু বা বন্ধ করবেন তা বেছে নিন।

    নেটওয়ার্ক ইন্সপেক্টর নিয়ম ও নিয়মের বিবরণ প্যানেল
    ছবি ৩. Network Inspector নিয়ম এবং নিয়মের বিবরণ প্যানেল।

কানেকশন ভিউ বা থ্রেড ভিউ থেকে, পাঠানো বা পাওয়া ডেটা সম্পর্কে বিস্তারিত তথ্য পর্যালোচনা করতে, অনুরোধের নামে ক্লিক করুন। রেসপন্স হেডার ও বডি, রিকোয়েস্ট হেডার ও বডি অথবা কল স্ট্যাক দেখতে ট্যাবে ক্লিক করুন।

উত্তর এবং অনুরোধ ট্যাবে, ফর্ম্যাট করা টেক্সট দেখতে পার্স করা দেখুন লিঙ্কে ক্লিক করুন। র টেক্সট দেখতে সোর্স দেখুন লিঙ্কে ক্লিক করুন।

র টেক্সট ও ফর্ম্যাট করা টেক্সটের মধ্যে টগল করুন
ছবি ৪. সংশ্লিষ্ট লিঙ্কে ক্লিক করে অরিজিনাল টেক্সট ও ফর্ম্যাট করা টেক্সটের মধ্যে টগল করুন।

HttpsURLConnection-এর জন্য নেটওয়ার্ক রিকোয়েস্ট দেখানোর পাশাপাশি, Network Inspector-এ 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")

জাভা

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 ব্যবহার করে, তাহলে সমস্যার বিষয়ে অভিযোগ জানান অথবা ইস্যু ট্র্যাকার সার্চ করুন যাতে আপনার সমস্যা সম্পর্কিত কোনও বিদ্যমান রিপোর্টে আপনার মতামত অন্তর্ভুক্ত করা যায়। আপনি অতিরিক্ত লাইব্রেরির জন্য সহায়তা চাইতে এইসব রিসোর্স ব্যবহার করতে পারেন।