Een upload die na een proxy-uitdaging opnieuw wordt geprobeerd, heeft zijn body weer nodig. Kies voor de Apache-connector van Jersey 2 gebufferde entiteitsverwerking in de configuratie waarmee die client wordt gebouwd:

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);

Voer de upload uit via de resulterende client. Deze typen komen uit de pakketten Jersey client en Apache-connector; een ongebruikte configuratie instellen zou het verzoek niet beïnvloeden.

De connector verpakt een gebufferde entiteit in Apache's BufferedHttpEntity. De niet-gebufferde streaming-entiteit ervan is niet herhaalbaar. Buffering geeft de authenticatiestroom bytes die hij opnieuw kan versturen in plaats van een verbruikte producer opnieuw te lezen.

Het garandeert niet dat authenticatie na één 407 eindigt. Sommige schema's vereisen terecht meerdere uitwisselingen, dus bekijk de hele onderhandeling voordat je een nieuwe uitdaging als verloren toestand behandelt.

Houd de bodygrootte binnen het geheugenbudget. Een grote streaming-upload heeft een herhalingsstrategie nodig die bij die belasting past; buffering voor elk verzoek inschakelen kan een onderhandelingsfout inruilen voor geheugenuitputting.

Gerelateerde artikelen