Una richiesta OkHttp non ha un campo proxy modificabile generale. Scegli il client con il percorso previsto prima di creare la sua chiamata.

Quando il resto della configurazione deve restare condiviso, deriva il client instradato da un client esistente:

OkHttpClient routed = baseClient.newBuilder()
    .proxy(new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress("203.0.113.10", 8080)))
    .build();

L'endpoint è solo illustrativo. Gli endpoint HTTP pubblici dell'elenco di proxy HTTP possono riempire questo indirizzo socket per un percorso di servizio pubblico consentito, purché la policy del client di base non fornisca credenziali proxy al nuovo endpoint. OkHttp documenta che newBuilder condivide le risorse del pool di connessioni e dei thread con il client originale. Ciò non significa che un socket stabilito tramite un proxy possa essere rietichettato come un altro percorso. L'idoneità della connessione dipende ancora dalla configurazione del percorso e dell'indirizzo.

Per il lavoro ripetuto, mantieni un insieme limitato di client indicizzati dalla policy di instradamento di cui hai davvero bisogno. Evita una mappa illimitata le cui chiavi contengano ogni account temporaneo o variazione di proxy mai osservata.

La condivisione delle risorse influisce anche sull'arresto. Chiudere una cache condivisa o arrestare un dispatcher condiviso può influire su altri client derivati che usano quelle risorse. Assegna alla proprietà delle risorse una durata chiara a livello di applicazione invece di trattare ogni client derivato come uno stack di rete isolato.

Infine, includi l'identità del proxy selezionato nei metadati propri della chiamata. Una variabile globale «ultimo proxy scelto» non può identificare il percorso di più richieste simultanee.

Articoli correlati