OkHttp-bronnen hergebruiken terwijl je een andere proxy kiest
Kies een met proxy geconfigureerde OkHttp-client voordat je een aanroep maakt en begrijp wat newBuilder deelt.
Een OkHttp-verzoek heeft geen algemeen muteerbaar proxyveld. Kies de client met de beoogde route voordat je de aanroep maakt.
Wanneer de rest van de configuratie gedeeld moet blijven, leid de gerouteerde client dan af van een bestaande client:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Het eindpunt is alleen ter illustratie. Openbare HTTP-eindpunten uit de HTTP-proxylijst kunnen dit socketadres vullen voor een toegestane openbare dienstroute, mits het beleid van de basisclient geen proxyreferenties aan het nieuwe eindpunt levert. OkHttp documenteert dat newBuilder verbindingspool- en threadbronnen met de oorspronkelijke client deelt. Dat betekent niet dat een socket die via één proxy tot stand is gebracht, als een andere route kan worden herlabeld. De geschiktheid van de verbinding blijft afhangen van de route- en adresconfiguratie.
Houd voor herhaald werk een begrensde set clients aan, gesleuteld op het routeringsbeleid dat je echt nodig hebt. Vermijd een onbegrensde map waarvan de sleutels elk ooit waargenomen tijdelijk account of elke proxyvariatie bevatten.
Het delen van bronnen beïnvloedt ook het afsluiten. Het sluiten van een gedeelde cache of het afsluiten van een gedeelde dispatcher kan andere afgeleide clients beïnvloeden die die bronnen gebruiken. Geef eigenaarschap van bronnen een duidelijke levensduur op applicatieniveau in plaats van elke afgeleide client als een geïsoleerde netwerkstack te behandelen.
Neem ten slotte de identiteit van de gekozen proxy op in de eigen metadata van de aanroep. Een globale variabele “laatst gekozen proxy” kan de route van meerdere gelijktijdige verzoeken niet identificeren.