Կարգավորել Retrofit-ի proxy-ն OkHttpClient-ի միջոցով
Տրամադրեք կարգավորված OkHttpClient Retrofit-ին՝ API-ի բազային URL-ը թողնելով ուղղված նպատակային ծառայությանը։
Կարգավորեք ուղղորդող proxy-ն OkHttp-ում, ապա տրամադրեք նույն client-ը 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 ծառայությանը։ Եթե այնտեղ տեղադրեք proxy-ի URL-ը, կփոխեք HTTP նպատակակետը․ դա չի կարգավորում proxy-ի բանակցությունը։ Բազային URL-ը նաև պահպանում է Retrofit-ի վերջին շեղի պահանջը։ Առանց proxy-ի նույնականացման թույլատրված հանրային API թեստը կարող է HTTP հասցե վերցնել HTTP պրոքսիների ցանկից առանձին Proxy օբյեկտի համար։
OkHttp-ի բացահայտ proxy-ն առաջնահերթ է իր ProxySelector-ի նկատմամբ։ Օգտագործեք այն, երբ client-ը պետք է ունենա ֆիքսված միջնորդ։ Նպատակակետից կախված երթուղավորում պահանջող հավելվածները ավելի լավ է այդ քաղաքականությունը ձևավորեն աջակցվող ընտրիչի միջոցով։
Եթե ծառայության ինտերֆեյսն արդեն ստեղծվել է այլ Retrofit օրինակից, այս նոր օրինակի կառուցումը չի տեղափոխում հին ինտերֆեյսի հարցումները։ Կարգավորված client-ը, Retrofit-ի օրինակը և ծառայության օբյեկտը պահեք նույն կառուցման ուղու վրա։
Նույնականացում ունեցող proxy-ի համար OkHttp-ն առանձին է տրամադրում proxyAuthenticator-ը՝ նպատակակետի նույնականացուցիչից։ Անհրաժեշտության դեպքում կարգավորեք այն OkHttp կառուցիչում, ապա պատրաստ client-ը փոխանցեք Retrofit-ին։ Basic նույնականացումով proxy-ի համար օգտագործեք proxyAuthenticator-ի սահմանափակ կրկնափորձերի մշակում։