Jersey / JAX-RS: Rückgabe der Inhaltslänge im Antwortheader anstelle der Chunked-Transfercodierung

8

Ich verwende Jersey, um RESTful-API-Ressourcen zu erstellen, und ResponseBuilder , um die Antwort zu generieren.

Beispielcode für die RESTful-Ressource:

%Vor%

In der Antwort wird die chunked Transfer-Codierung in den Antwortheadern zurückgegeben. Wie lautet der richtige Weg in der "Jersey-Welt", dass der Header Content-Length anstelle des Headers Transfer-Encoding: chunked in den Antwortheadern zurückgegeben wird?

    
richsinn 25.07.2012, 22:03
quelle

4 Antworten

4

Die Auswahl von Content-Length oder Transfer-Encoding ist nur die Wahl dieses Containers. Es ist wirklich eine Frage der Puffergröße.

Eine mögliche Lösung ist die Bereitstellung eines SevletFilter , das all diese marshallerten Bytes puffert und den Content-Length header value festlegt.

Siehe diese Seite .

%Vor%     
Jin Kwon 02.08.2012, 13:01
quelle
2

Wenn Ihr Eingabestream beispielsweise nur von einem lokalen Dateisystem gelesen wird füge hinzu:

%Vor%

Überprüfen Sie den vollständigen Code für eine klarere Erklärung:

%Vor%

Die Clientseite ist ein Apache HttpClient-Code.

    
Octavian Ionel 18.02.2015 14:02
quelle
2

In Ihrer Klasse, die ResourceConfig erweitert, können Sie die Puffergröße festlegen. Antworten über dieser Größe werden chunked, darunter wird Content-Length.

%Vor%     
MGH 26.01.2017 10:19
quelle
0

Eine Antwort auf eine sehr ähnliche Frage zu StackOverflow finden Sie hier

Ich habe es hier kopiert, um sicherzustellen, dass es nicht in einen Kommentar umgewandelt wird:

Ein großartiger Beispielfilter dafür, der unabhängig vom Projekt verwendet werden kann, ist dieses ContentLengthFilter.java aus dem Projekt Carrot2 auf github.

Beachten Sie, dass zur Lösung des Problems ein Antwort-Wrapper mit einem Byte-Stream verwendet wird. Dadurch wird auch sichergestellt, dass Transfer-Encoding: Chunked nicht von einem anderen Filter / Code in der Filterkette gesetzt wird und Ihre Content-Length -Header überschreibt es steht fest. Sie können dies überprüfen, indem Sie dies mit größeren Dateien testen, da diese normalerweise in der Antwort chunked werden.

Ich werde auch den Inhalt der Datei hier kopieren, um sicherzustellen, dass es nicht zu einem fehlerhaften Link wird:

%Vor%     
Brad Parks 08.09.2017 18:33
quelle

Tags und Links