Znovu používajte prostriedky OkHttp pri výbere iného proxy
Pred vytvorením volania vyberte klienta OkHttp nakonfigurovaného s proxy a pochopte, čo newBuilder zdieľa.
Požiadavka OkHttp nemá všeobecné meniteľné pole proxy. Pred vytvorením jej volania vyberte klienta s požadovanou trasou.
Keď má zvyšok konfigurácie zostať zdieľaný, odvodte smerovaného klienta z existujúceho klienta:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Koncový bod je len ilustratívny. Verejné koncové body HTTP zo zoznamu HTTP proxy môžu vyplniť túto adresu socketu pre povolenú trasu verejnej služby, ak zásady základného klienta neposkytujú novému koncovému bodu žiadne prihlasovacie údaje proxy. OkHttp dokumentuje, že newBuilder zdieľa prostriedky fondu pripojení a vlákien s pôvodným klientom. To neznamená, že socket vytvorený cez jedno proxy možno premenovať na inú trasu. Spôsobilosť pripojenia stále závisí od konfigurácie trasy a adresy.
Pre opakovanú prácu udržiavajte obmedzenú množinu klientov s kľúčmi podľa zásad smerovania, ktoré skutočne potrebujete. Vyhnite sa neobmedzenej mape, ktorej kľúče obsahujú všetky kedy pozorované dočasné účty alebo varianty proxy.
Zdieľanie prostriedkov ovplyvňuje aj vypínanie. Zatvorenie zdieľanej vyrovnávacej pamäte alebo vypnutie zdieľaného dispečera môže ovplyvniť iných odvodených klientov, ktorí tieto prostriedky používajú. Dajte vlastníctvu prostriedkov jasnú životnosť na úrovni aplikácie, namiesto toho, aby ste s každým odvodeným klientom zaobchádzali ako s izolovaným sieťovým zásobníkom.
Nakoniec zahrňte identitu vybraného proxy do vlastných metadát volania. Globálna premenná „naposledy vybrané proxy“ nedokáže určiť trasu niekoľkých súbežných požiadaviek.