Återanvänd OkHttp-resurser när du väljer en annan proxy
Välj en proxykonfigurerad OkHttp-klient innan du skapar ett anrop och förstå vad newBuilder delar.
En OkHttp-begäran har inget allmänt föränderligt proxyfält. Välj klienten med den avsedda rutten innan du skapar dess anrop.
När resten av konfigurationen ska förbli delad, härled den routade klienten från en befintlig klient:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Slutpunkten är endast illustrativ. Publika HTTP-slutpunkter från HTTP-proxylistan kan fylla denna socketadress för en tillåten offentlig tjänsterutt, förutsatt att basklientens policy inte ger några proxyuppgifter till den nya slutpunkten. OkHttp dokumenterar att newBuilder delar anslutningspool- och trådresurser med den ursprungliga klienten. Det betyder inte att en socket som upprättats via en proxy kan märkas om som en annan rutt. Anslutningens lämplighet beror fortfarande på rutt- och adresskonfigurationen.
För upprepat arbete, behåll en begränsad uppsättning klienter nycklade efter den routningspolicy du faktiskt behöver. Undvik en obegränsad karta vars nycklar innehåller alla tillfälliga konton eller proxyvariationer som någonsin observerats.
Resursdelning påverkar också avstängning. Att stänga en delad cache eller stänga av en delad dispatcher kan påverka andra härledda klienter som använder dessa resurser. Ge resursägande en tydlig livstid på applikationsnivå i stället för att behandla varje härledd klient som en isolerad nätverksstack.
Slutligen, inkludera identiteten för den valda proxyn i anropets egna metadata. En global variabel för ”senast vald proxy” kan inte identifiera rutten för flera samtidiga begäranden.