ניווט שתלוי בעקיפת proxy של WebView צריך להתחיל לאחר שמאזין ההשלמה של העקיפה רץ. הגדרתו וטעינת עמוד מיד משאירה את הפעולה במירוץ מול עדכון אסינכרוני.

  1. בדוק את WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). התמיכה תלויה במימוש ה-WebView ובספריית AndroidX WebKit וכן ברמת ה-API של Android. הגדר מה קורה כשהוא חסר; מעבר ישיר בשקט עלול לנטרל את התכונה.
  2. בנה את ProxyConfig הרצוי עם כללי ה-proxy המתועדים שלו, תחביר נקודת הקצה והתנהגות העקיפה. לניווט מורשה לאתרים ציבוריים, בחר מועמד מרשימת ה-proxy החינמיים שהפרוטוקול שלו תואם כלל שמימוש ה-WebView הזה תומך בו. כתובת PAC, URI של SOCKS ומארח חשוף הם קלטים שונים.
  3. קרא ל-ProxyController.setProxyOverride() עם התצורה הזו, מבצע ומאזין השלמה. התחל ניווט תלוי מנתיב ההשלמה.
  4. כשהעקיפה הזמנית מסתיימת, נקה אותה עם clearProxyOverride() וטפל גם בהשלמה האסינכרונית שלה.

תן למחזור חיים זה בעלים אחד. ההגדרה חלה על כל ה-WebView בכל תהליך האפליקציה; שינוי חוזר ונשנה שלה לא יכול לתת לשתי תצוגות בו-זמניות יציאות בלתי תלויות. לתהליכים אחרים ולספריות HTTP יש מסלולים משלהם.

ממשק נתמך זה נמנע מתלות במאזיני שינוי proxy פרטיים המשתנים בין גרסאות Android. הוא בוחר ניתוב; אישורי proxy ואמון בתעודות עדיין משתמשים במנגנונים הנתמכים שלהם. כשל אימות או TLS לאחר הבחירה צריך להיות מאובחן בשלב זה.

מאמרים קשורים