Ich verwende eine JAX-RS-Webanwendung mit Jersey und Tomcat. Get-Anfragen sind in Ordnung, aber wenn ich versuche, JSON zu posten, bekomme ich einen HTTP-Status 415 - Nicht unterstützter Medientyp.
Hier ist meine einfache HelloWorld.java:
%Vor%Hier ist die Anfrage, die ich in Postman versuche (mit 'application / json' Header):
Hier ist das Projektlayout mit Bibliotheken:
Ich benutze:
Danke!
Die Jersey-Distribution kommt nicht mit JSON / POJO-Unterstützung aus der Box. Sie müssen die Abhängigkeiten / Jars hinzufügen.
Fügen Sie all diese
hinzuMit Maven, unten wird alles oben in
ziehen %Vor%Für zukünftige Leser, die Jersey 2.17 nicht verwenden (und Jars direkt anstelle von Maven verwenden), können Sie hier , um die von Ihnen verwendete Jersey-Version zu finden und zu sehen, welche transitiven Abhängigkeitsversionen Sie benötigen. Die aktuelle Version dieser Jersey Abhängigkeit verwendet Jackson 2.3.2. Das ist die Hauptsache, auf die Sie achten müssen.
Überprüfen Sie Ihren REST-Aufruf contentType. Es sollte sein contentType: 'application / json', wenn Sie Json-Daten an die POJO-Klasse übergeben.
Ich denke, dass die Post-Anfrage korrekt funktioniert, aber Ihr Browser / Postbote die vom Dienst zurückgegebene Antwort nicht analysieren kann. Es gibt Text zurück und Postman wartet json. Fügen Sie Ihrem Webservice die Annotation Produce hinzu und legen Sie sie ebenfalls auf json fest. Ich empfehle Ihnen auch, sich mit Fiddler2 in Verbindung zu setzen, um genaue Informationen über die Leitung zu erhalten.
Durch eine Menge der Antworten sowohl auf dieser Seite als auch anderen gegangen, aber ohne Erfolg. Das hat wirklich für mich funktioniert:
METHODE 1:
Anstatt JSONObject
als Parameter an die Ressourcenmethode zu übergeben, übergeben Sie lieber String
. Nimm das String
und erstelle ein JSONObject
damit
und dann können Sie es in Ihrem Code verwenden. Wie so,
METHODE 2:
Hinzufügen dieser Abhängigkeit ab September 2017 :
%Vor%Tags und Links java json rest jersey jersey-2.0