Կարգավորեք ուղղորդող 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-ի սահմանափակ կրկնափորձերի մշակում։

Առնչվող հոդվածներ