Ich arbeite an einem Java-Programm, das einen HTTP-Client implementiert. Ich teste es, Anfragen an einen Server zu senden. GET, POST und DELETE-Anfragen funktionieren in Ordnung. Zum Beispiel bekomme ich nach einer POST-Anfrage eine Ausgabe
%Vor%und die Datenbank spiegelt die vorgenommenen Änderungen wider.
Nach einer PUT-Anfrage bekomme ich jedoch das folgende HTML-Markup einer Webseite, das einen Fehler anzeigt.
%Vor%und dementsprechend keine Änderungen in der Datenbank.
Ich habe festgestellt, dass dies etwas mit dem Content-Length-Header zu tun haben kann, aber ich bin mir nicht sicher. Nach dem Versuch, diesen Header hinzuzufügen, wartet mein Programm eine Minute lang und löst dann eine Exception aus, die darauf hinweist, dass es die Serverantwort nicht verarbeiten kann.
Ich kann bei Bedarf auch Code oder Stack-Trace bereitstellen.
Ja, das Problem mit Content-Length
. HTTP Error 411 bedeutet
Der Server akzeptiert die Anfrage nicht ohne eine definierte Inhaltslänge. Der Client kann die Anfrage wiederholen, wenn er ein gültiges Content-Length-Header-Feld hinzufügt, das die Länge des Nachrichtentexts in der Anforderungsnachricht enthält.
Wenn Sie also eine leere RequestBody
in der POST / PUT-Methode senden, müssen Sie auch Content-Length:0
senden. Fügen Sie diesen Header in Ihre Anfrage ein. Ich glaube nicht, dass dieser Header ein Problem verursacht, das Sie in Request Object eingefügt haben.
Tags und Links java rest http put content-length