Die vom Client gesendete Anfrage war syntaktisch falsch (). + Spring, RESTClient

8

Ich arbeite mit Spring MVC mit JSON-Objekten. Während ich versuche, ein JSON-Objekt von RESTClient zu senden, bekomme ich

  

HTTP Status 400 - Die vom Client gesendete Anfrage war syntaktisch falsch ().

Dies ist mein Controller

%Vor%

Meine Anfrage-URL: http://localhost:8080/Prime/addTask

Mein Json-Objekt:

  

{"taskName": "nichts", "taskId": 1234, "taskDesc": "nichts macht"}

Ich habe auch versucht, in RESTClient "Content-Type: application / json" anzugeben, bekomme aber immer noch den gleichen Fehler

    
Chandrasekar 08.01.2013, 05:23
quelle

3 Antworten

2

Versuchen Sie es

Ändern

%Vor%

An

%Vor%

Wenn Sie nicht an der POST-Methode interessiert sind, können Sie dies versuchen

Ändern Sie Ihre Controller-Methode von

%Vor%

bis

%Vor%

und ändern Sie Ihre URL zu

%Vor%     
Kris 08.01.2013, 05:43
quelle
16

Ich habe kürzlich eine ähnliche Situation mit einer JSON-Zeichenfolge im Anfragetext angetroffen und ein sehr ähnliches Spring-Setup verwendet. In meinem Fall habe ich keinen String-Parameter angegeben und es selbst deserialisiert. Ich ließ Spring das tun:

%Vor%

Ich bekam einen HTTP-Fehler 400 "Die vom Client gesendete Anfrage war syntaktisch falsch" Antwort. Bis ich merkte, dass es auf der @RequestBody MyJsonValueObject keinen Standardkonstruktor gab, gab es Probleme mit der Deserialisierung. Dieses Problem wurde jedoch auf diese Weise dargestellt.

Wenn Sie POST und Objekte verwenden und Fehler wie diese erhalten, stellen Sie sicher, dass Sie einen Standardkonstruktor haben ! Fügen Sie eine JUnit hinzu, um sicherzustellen, dass Sie das Objekt deserialisieren können.

Hinweis : Ich sage nicht, dass dies der einzige Grund ist, warum Sie diesen Fehler erhalten. Der ursprüngliche Fall verwendete nur String (der einen Standardkonstruktor hat!), Also ist es ein wenig anders. Aber in beiden Fällen scheint die Anfrage-URI der richtigen Methode zugeordnet worden zu sein und etwas ist schiefgelaufen, als versucht wurde, Parameter aus der HTTP-Anfrage zu extrahieren.

    
Ben Iggulden 02.10.2013 06:39
quelle
0

Mein Problem lag an der inkorrekten Zuordnung des @RequestBody-Objekts.

Mein Anfragetext sieht so aus

%Vor%

Ich hatte den folgenden Code in meinem Controller

%Vor%

Das gibt mir HTTP 400, weil Spring nicht weiß, wie ich meine JSON-Daten an eine Liste binden soll.

Ich habe das RequestBody-Objekt folgendermaßen geändert:

%Vor%

und definiert ObjectiveDto wie folgt

%Vor%

Dies hat den HTTP 400-Fehler behoben.

    
Anthony Nguyen 24.02.2015 19:54
quelle

Tags und Links