Genbrug OkHttp-ressourcer, når du vælger en anden proxy
Vælg en proxy-konfigureret OkHttp-klient, før du opretter et kald, og forstå, hvad newBuilder deler.
En OkHttp-anmodning har ikke et generelt mutabelt proxyfelt. Vælg klienten med den tilsigtede rute, før du opretter dens kald.
Når resten af konfigurationen skal forblive delt, skal du udlede den rutede klient fra en eksisterende klient:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Endepunktet er kun illustrativt. Offentlige HTTP-endepunkter fra HTTP-proxylisten kan udfylde denne socketadresse for en tilladt offentlig servicerute, forudsat at basisklientens politik ikke giver nye proxyoplysninger til det nye endepunkt. OkHttp dokumenterer, at newBuilder deler forbindelsespulje- og trådressourcer med den oprindelige klient. Det betyder ikke, at en socket, der er oprettet gennem én proxy, kan omdøbes til en anden rute. Forbindelsesberettigelse afhænger stadig af rute- og adressekonfigurationen.
Til gentaget arbejde skal du bevare et begrænset sæt klienter med nøgle efter den routingpolitik, du faktisk har brug for. Undgå et ubegrænset map, hvis nøgler indeholder enhver midlertidig konto eller proxyvariation, der nogensinde er set.
Ressourcedeling påvirker også nedlukning. Lukning af en delt cache eller nedlukning af en delt dispatcher kan påvirke andre afledte klienter, der bruger disse ressourcer. Giv ressourceejerskab en klar levetid på applikationsniveau i stedet for at behandle hver afledt klient som en isoleret netværksstak.
Medtag endelig identiteten af den valgte proxy i kaldets egne metadata. En global variabel for “sidst valgte proxy” kan ikke identificere ruten for flere samtidige anmodninger.