Die Anfrage, die vom client gesendet wurde syntaktisch falsch ().+Frühling , RESTClient
Ich arbeite mit Spring MVC mit JSON-Objekten. während ich bin tring zu schicken JSON-Objekt aus RESTClient, ich bin immer
HTTP-Status 400 - Die Anfrage, die vom client gesendet wurde syntaktisch falsch ().
Dies ist mein controller
ObjectMapper mapper=new ObjectMapper();
@RequestMapping(value = "/addTask", method = RequestMethod.GET)
public ModelAndView addTask(@RequestParam("json") String json) throws JsonParseException, JsonMappingException, IOException
{
System.out.println("Json object from REST : "+json);
Task task=(Task) mapper.readValue(json, Task);
service.addService(task);
return new ModelAndView("Result");
}
Meine Anfrage URL : http://localhost:8080/Prime/addTask
Mein Json-Objekt :
{"taskName":"nichts","taskId":1234,"taskDesc":"nichts tun"}
Auch ich habe versucht, die Angabe "Content-Type: application/json" in RESTClient, aber bin noch immer die gleichen Fehler
- Ich bin nicht sicher, wie die Feder funktioniert, aber wenn Ihre Anfrage-Methode ist
GET
sollten Sie nicht verlangen URLhttp://localhost:8080/Prime/addTask?json=%7B%22taskName%22%3A%22nothing%22%2C%22taskId%22%3A1234%2C%22taskDesc%22%3A%22nothing%20doing%22%7D
mit derjson
parameter der Abfrage gesendete Zeichenfolge? - Ich habe auch versucht, durch hinzufügen der json-string der Anfrage-URL, aber immer noch sagt es, dass der gleiche Fehler.
- Sie können verwenden Sie ein tool wie
Fiddler
(fiddler2.com/fiddler2/version.asp) überprüft die Anforderung. Auch die post, die es in der Frage so, andere können einen Blick auf Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
Ändern
Zu
Wenn Sie nicht interessiert sind in POST-Methode können Sie versuchen, diese
ändern Sie Ihre Controller-Methode von
zu
und ändern Sie Ihre URL
Lief ich in einer ähnlichen situation mit einem JSON-string im request-body vor kurzem, und verwenden eine sehr ähnliche Feder-setup, wie bei Ihnen. In meinem Fall war ich nicht angeben, einen String-parameter und deserialising es mich aber, ich war die Vermietung der Frühling tun:
War ich immer ein HTTP-Fehler 400 "Die Anfrage, die vom client gesendet wurde syntaktisch falsch" Antwort. Bis ich gemerkt habe, dass es nicht ein Standard-Konstruktor auf die
@RequestBody MyJsonValueObject
so gab es Probleme deserialising es. Das problem in dieser Weise, obwohl.Wenn Sie also mit POST und Objekte, und immer Fehler wie diese, stellen Sie sicher, dass Sie einen default-Konstruktor! Fügen Sie einige JUnit sicher zu sein, können Sie deserialise das Objekt.
Hinweis: ich sage ja nicht, das ist der einzige Grund, warum Sie diese Fehlermeldung erhalten. Der ursprüngliche Fall nur der String (die eine Standard-Konstruktor !) so ist es ein wenig anders. In beiden Fällen aber scheint es, dass die request-URI zu haben scheint, wurde zugeordnet, um die richtige Methode, und etwas schief gegangen ist, versucht zum extrahieren der Parameter aus der HTTP-Anforderung.
Mein problem wurde durch die fehlerhafte Zuordnung der @RequestBody Objekt.
Meinen Wunsch Körper sieht aus wie diese
Hatte ich den folgenden code in meinen controller
Diese geben mir HTTP 400, weil der Frühling nicht weiß, wie zu binden, meine Json-Daten in eine Liste.
Änderte ich die RequestBody-Objekt, um die folgenden
definiert und ObjectiveDto wie folgt
Diese gelöst werden, die HTTP 400-Fehler.