Refolosiți resursele OkHttp atunci când selectați un alt proxy
Selectați un client OkHttp configurat cu proxy înainte de a crea un apel și înțelegeți ce partajează newBuilder.
O cerere OkHttp nu are un câmp de proxy mutabil general. Alegeți clientul cu ruta dorită înainte de a crea apelul acestuia.
Când restul configurației trebuie să rămână partajat, derivați clientul rutat dintr-un client existent:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Punctul final este doar ilustrativ. Punctele finale HTTP publice din lista de proxy HTTP pot completa această adresă de socket pentru o rută de serviciu public permisă, cu condiția ca politica clientului de bază să nu furnizeze noi acreditări proxy punctului final nou. OkHttp documentează că newBuilder partajează resursele pool-ului de conexiuni și ale firelor cu clientul original. Aceasta nu înseamnă că un socket stabilit printr-un proxy poate fi reetichetat ca altă rută. Eligibilitatea conexiunii depinde în continuare de configurația rutei și a adresei.
Pentru munca repetată, păstrați un set mărginit de clienți indexați după politica de rutare de care aveți nevoie cu adevărat. Evitați o hartă nemărginită ale cărei chei conțin fiecare cont temporar sau variație de proxy observată vreodată.
Partajarea resurselor afectează și oprirea. Închiderea unui cache partajat sau oprirea unui dispecer partajat poate afecta alți clienți derivați care folosesc acele resurse. Oferiți proprietății resurselor o durată de viață clară la nivel de aplicație în loc să tratați fiecare client derivat ca un stiv de rețea izolat.
În final, includeți identitatea proxy-ului selectat în metadatele proprii ale apelului. O variabilă globală „ultimul proxy ales” nu poate identifica ruta mai multor cereri concurente.