Reutilizar los recursos de OkHttp al seleccionar un proxy distinto
Seleccione un cliente OkHttp configurado con proxy antes de crear una llamada y comprenda qué comparte newBuilder.
Una solicitud de OkHttp no tiene un campo de proxy mutable general. Elija el cliente con la ruta prevista antes de crear su llamada.
Cuando el resto de la configuración deba permanecer compartida, derive el cliente enrutado a partir de un cliente existente:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();El punto de conexión es ilustrativo. Los puntos de conexión HTTP públicos de la lista de proxies HTTP pueden rellenar esta dirección de socket para una ruta de servicio público permitida, siempre que la política del cliente base no proporcione credenciales de proxy al nuevo punto de conexión. OkHttp documenta que newBuilder comparte recursos de grupo de conexiones e hilos con el cliente original. Eso no significa que un socket establecido a través de un proxy pueda reetiquetarse como otra ruta. La elegibilidad de la conexión sigue dependiendo de la configuración de ruta y dirección.
Para trabajo repetido, mantenga un conjunto acotado de clientes indexados por la política de enrutamiento que realmente necesita. Evite un mapa ilimitado cuyas claves contengan todas las cuentas temporales o variaciones de proxy jamás observadas.
El uso compartido de recursos también afecta el apagado. Cerrar una caché compartida o apagar un despachador compartido puede afectar a otros clientes derivados que usan esos recursos. Dé a la propiedad de los recursos una vida útil clara a nivel de aplicación en lugar de tratar cada cliente derivado como una pila de red aislada.
Por último, incluya la identidad del proxy seleccionado en los propios metadatos de la llamada. Una variable global de «último proxy elegido» no puede identificar la ruta de varias solicitudes concurrentes.