Un caricamento ritentato dopo una richiesta del proxy ha di nuovo bisogno del suo corpo. Per il connettore Apache di Jersey 2, seleziona l'elaborazione dell'entità memorizzata nel buffer nella configurazione usata per costruire quel client:

ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI,
                "http://proxy.example.net:8080");
config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
                RequestEntityProcessing.BUFFERED);

Esegui il caricamento tramite il client risultante. Questi tipi provengono dai pacchetti Jersey client e Apache-connector; impostare una configurazione inutilizzata non influirebbe sulla richiesta.

Il connettore avvolge un'entità memorizzata in buffer nel BufferedHttpEntity di Apache. La sua entità di streaming non memorizzata non è ripetibile. Il buffering fornisce al flusso di autenticazione byte che può reinviare invece di rileggere un producer già consumato.

Non garantisce che l'autenticazione termini dopo un solo 407. Alcuni schemi richiedono legittimamente più scambi, quindi esamina l'intera negoziazione prima di considerare un'altra richiesta come stato perduto.

Mantieni la dimensione del corpo entro il budget di memoria. Un caricamento in streaming di grandi dimensioni necessita di una strategia di ripetizione adatta a quel carico; abilitare il buffering per ogni richiesta può scambiare un errore di negoziazione con l'esaurimento della memoria.

Articoli correlati