POST Jersey-REST-Dienst immer den Fehler 415 Unsupported Media Type
Ich bin mit einem JAX-RS web-Anwendung mit Jersey und Tomcat. Get-Anfragen sind in Ordnung, aber wenn ich versuche zu posten JSON bekomme ich einen HTTP status 415 - Unsupported Media Type.
Hier ist meine einfache HelloWorld.java:
package service;
import javax.ws.rs.*;
@Path("hello")
public class HelloWorld {
@GET
@Produces("text/plain")
public String get() {
return "hello world";
}
@POST
@Consumes("application/json")
public String post(JS input) {
return input.hello;
}
public static class JS {
public String hello;
}
}
Hier ist die Anforderung versuche ich in Postman (mit 'application/json' - header):
Hier ist die Projekt-layout mit Bibliotheken:
Ich bin mit:
- Java 7 x64
- Jersey 2.17
- Tomcat 7.0.62 x64
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jersey-distribution kommt nicht mit JSON/POJO-Unterstützung aus der box. Sie müssen zum hinzufügen von Abhängigkeiten/Gläser.
All diese
Mit Maven, unten ziehen Sie alle oben in
Für alle zukünftigen Leser nicht mit Jersey 2.17 (und Gläser zu benutzen, sondern direkt von Maven), können Sie gehen, hier zu finden, die Jersey-version, die Sie verwenden, und sehen, was transitive Abhängigkeit Versionen, die Sie brauchen. Die aktuelle version dieses Jersey-Abhängigkeit nutzt Jackson 2.3.2. Das ist die wichtigste Sache, die Sie brauchen, zu suchen.
java.lang.NoClassDefFoundError: org/glassfish/jersey/message/filtering/EntityFilteringFeature
beim starten von Tomcat. Hilfe?Gegangen durch eine Menge von den Antworten auf dieser Seite und der anderen aber ohne Erfolg.
Diese eigentlich für mich gearbeitet:
METHODE 1:
Statt der übergabe
JSONObject
als parameter an die Ressource-Methode übergeben Sie einenString
eher. Nehmen Sie dieString
und erstellen Sie eineJSONObject
mit esund dann können Sie es in den code. Wie so,
METHODE 2:
Hinzufügen dieser Abhängigkeit als von September 2017:
Referenz von hier
Überprüfen Sie Ihre REST-Aufruf der contentType. Es sollte
contentType: 'application/json', wenn Sie auf der Durchreise sind json-Daten zu POJO-Klasse.
Ich denke, dass Sie post-Anforderung korrekt funktioniert, aber dein browser/Postboten können nicht Parsen der Antwort zurück aus dem service. Es ist wieder Klartext und Postboten wartet json. Fügen Produzieren Kommentar zu Ihrer web-service und legen Sie es auf json zu. Außerdem schlage ich vor Sie um zu überprüfen, mit Fiddler2, um zu sehen, genaue Informationen über den Draht.