הגדרת פרוקסי ל-Retrofit דרך OkHttpClient
מסרו ל-Retrofit אובייקט OkHttpClient מוגדר, בעוד כתובת הבסיס של ה-API ממשיכה להצביע אל שירות היעד.
הגדירו את פרוקסי ההעברה ב-OkHttp, ואז מסרו את אותו לקוח ל-Retrofit:
import java.net.InetSocketAddress;
import java.net.Proxy;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
OkHttpClient http = new OkHttpClient.Builder()
.proxy(proxy)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example/")
.client(http)
.build();
הקטע בונה את שכבת התעבורה ואת מופע ה-Retrofit. לפני build הוסיפו לבונה הזה את מפעלי הממירים ומתאמי הקריאות שהאפליקציה דורשת, ואחר כך צרו את ממשק השירות מהמופע הזה.
השאירו את baseUrl מצביע אל שירות ה-API האמיתי. הצבת כתובת הפרוקסי שם משנה את יעד ה-HTTP; היא אינה מגדירה משא ומתן עם פרוקסי. כתובת הבסיס גם שומרת על דרישת ה-Retrofit לקו נטוי בסוף. בדיקה מורשית של API ציבורי בלי אימות פרוקסי יכולה לקחת כתובת HTTP מתוך רשימת שרתי פרוקסי HTTP עבור אובייקט ה-Proxy הנפרד.
פרוקסי מפורש ב-OkHttp גובר על ה-ProxySelector שלו. השתמשו בכך כשהלקוח צריך מתווך קבוע. אפליקציות שזקוקות לניתוב תלוי יעד מוטב שיתכננו את המדיניות הזו דרך הבורר הנתמך.
אם ממשק השירות כבר נוצר ממופע Retrofit אחר, בניית המופע החדש הזה אינה מעבירה את הבקשות של הממשק הישן. החזיקו את הלקוח המוגדר, מופע ה-Retrofit ואובייקט השירות באותו נתיב בנייה.
עבור פרוקסי עם אימות, OkHttp חושף את proxyAuthenticator בנפרד ממאמת היעד. הגדירו אותו בבונה OkHttp כשצריך, ואז העבירו את הלקוח המושלם ל-Retrofit. עבור פרוקסי עם אימות Basic, השתמשו בטיפול מוגבל בניסיונות חוזרים של proxyAuthenticator.