Повторно използване на ресурсите на OkHttp при избор на друг прокси
Изберете конфигуриран с прокси OkHttp клиент, преди да създадете заявка, и разберете какво споделя newBuilder.
Заявката на OkHttp няма общо изменяемо поле за прокси. Изберете клиента с желания маршрут, преди да създадете заявката му.
Когато останалата конфигурация трябва да остане споделена, извлечете маршрутизирания клиент от съществуващ клиент:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();Крайната точка е само пример. Публични HTTP крайни точки от списъка с HTTP прокси могат да запълнят този адрес на сокет за разрешен маршрут за обществена услуга, при условие че политиката на базовия клиент не предоставя идентификационни данни за прокси на новата крайна точка. OkHttp документира, че newBuilder споделя ресурсите на пула от връзки и нишките с оригиналния клиент. Това не означава, че сокет, установен през един прокси, може да бъде преименуван като друг маршрут. Допустимостта на връзката все още зависи от конфигурацията на маршрута и адреса.
За повтаряща се работа поддържайте ограничен набор от клиенти, ключовани по политиката за маршрутизиране, която наистина ви е нужна. Избягвайте неограничена карта, чиито ключове съдържат всеки временен акаунт или вариация на прокси, наблюдавани някога.
Споделянето на ресурси влияе и на спирането. Затварянето на споделен кеш или изключването на споделен диспечер може да засегне други производни клиенти, използващи тези ресурси. Дайте на собствеността върху ресурсите ясен жизнен цикъл на ниво приложение, вместо да третирате всеки производен клиент като изолиран мрежов стек.
Накрая, включете идентичността на избрания прокси в собствените метаданни на заявката. Глобална променлива „последно избран прокси“ не може да идентифицира маршрута на няколко едновременни заявки.