Ein Upload, der nach einer Proxy-Aufforderung wiederholt wird, braucht seinen Body erneut. Wählen Sie für den Apache-Connector von Jersey 2 die gepufferte Entitätsverarbeitung in der Konfiguration, mit der dieser Client aufgebaut wird:

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

Führen Sie den Upload über den resultierenden Client aus. Diese Typen stammen aus den Paketen Jersey client und Apache-connector; eine ungenutzte Konfiguration würde die Anfrage nicht beeinflussen.

Der Connector verpackt eine gepufferte Entität in Apaches BufferedHttpEntity. Deren ungepufferte Streaming-Entität ist nicht wiederholbar. Puffern liefert dem Authentifizierungsablauf Bytes, die er erneut senden kann, statt einen verbrauchten Producer erneut zu lesen.

Es garantiert nicht, dass die Authentifizierung nach einer 407 endet. Manche Verfahren erfordern berechtigt mehrere Austausche, prüfen Sie daher die gesamte Aushandlung, bevor Sie eine weitere Aufforderung als verlorenen Zustand behandeln.

Halten Sie die Body-Größe im Speicherbudget. Ein großer Streaming-Upload braucht eine für diese Last geeignete Wiederholungsstrategie; Puffern für jede Anfrage zu aktivieren kann einen Aushandlungsfehler gegen Speichererschöpfung tauschen.

Ähnliche Artikel