Reutilizar os recursos de OkHttp ao seleccionar un proxy distinto
Seleccione un cliente OkHttp configurado con proxy antes de crear unha chamada e comprenda que comparte newBuilder.
Unha solicitude de OkHttp non ten un campo de proxy mutable xeral. Escolla o cliente coa ruta prevista antes de crear a súa chamada.
Cando o resto da configuración deba permanecer compartida, derive o cliente encamiñado a partir dun cliente existente:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();O punto de conexión é ilustrativo. Os puntos de conexión HTTP públicos da lista de proxies HTTP poden encher este enderezo de socket para unha ruta de servizo público permitida, sempre que a política do cliente base non forneza credenciais de proxy ao novo punto de conexión. OkHttp documenta que newBuilder comparte recursos do pool de conexións e de fíos co cliente orixinal. Iso non significa que un socket establecido a través dun proxy poida reetiquetarse como outra ruta. A elixibilidade da conexión segue dependendo da configuración de ruta e enderezo.
Para traballo repetido, manteña un conxunto limitado de clientes indexados pola política de encamiñamento que realmente necesita. Evite un mapa ilimitado cuxas chaves conteñan todas as contas temporais ou variacións de proxy xamais observadas.
A compartición de recursos tamén afecta o apagado. Pechar unha caché compartida ou apagar un despachador compartido pode afectar outros clientes derivados que usan eses recursos. Dea á propiedade dos recursos unha vida útil clara a nivel de aplicación en lugar de tratar cada cliente derivado como unha pila de rede illada.
Por último, inclúa a identidade do proxy seleccionado nos propios metadatos da chamada. Unha variable global «último proxy elixido» non pode identificar a ruta de varias solicitudes simultáneas.