400-Fehler, wenn dabei die Spring-Rest Posten
Habe ich ein Spring Web-service, dass ich zu tun haben einen Beitrag. Dies ist die aktuelle Signatur.
ScreenResult sendScreenAsPostcard(@RequestParam String listOfRecipients, @RequestParam String message, @RequestParam String userId, @RequestParam String captcha, @RequestParam MultipartFile image)
Einer Flash-Anwendung ruft diese. Ich bin mit dem front-end und mit Firebug zu schauen Parameter. Wenn ich diese übergeben. Ich bekomme
400 Bad Request.
Wenn ich die Unterschrift nur um sicherzugehen, ich kann Sie alle schlagen,
ScreenResult sendScreenAsPostcard(@RequestBody string)
und drucken in der Zeichenfolge. Er trifft die Dienst-und ich glaube, es ist in der Lage zu Lesen, die Parameter obwohl ich bin mir nicht sicher, ob es liest die Datei multipart genau. Meine Frage ist, was mache ich falsch?
Die flash-Applikation ist vorbei JSON.
Dies ist ein relevanter Teil des Körpers.
Content-type: application/json Accept: application/json
Content-Disposition: form-data; name="message"
{"listOfRecipients":"","message":"","captcha":"","image":"RldTCBf+AAB4AAXcAAARlAAADAEAfxEEAAAACAAAAL8W4f0AAAEA2/0AAAAA/9n/2P/Y/+AAEEpGSUYAAQIBAEgASAAA/","userId":""}
- Versuchen Sie, Ihre web-app in einem debugger, und setzen Sie einen Haltepunkt in Ihrem
HandlerExceptionResolver
. Was auch immer verwendet wird, um die bind-Parameter werden sollte, eine Ausnahme zu werfen, dass geht durch diese Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte den ähnlichen Fehler und festgestellt, dass ich ein Feld Zeichenfolge sollte eine Zahl sein. Nachdem ich es korrigieren, der Beitrag wurde erfolgreich. 🙂
@RequestParam
ist über HTTP GET/POST-Parameter. Und Sie haben nicht solche Parameter, so Ihr reichen, ist ein "bad request". Auf der anderen Seite Ihre Anfrage Körper umgewandelt werden können, um ein Objekt (es ist JSON), so dass die 2. funktioniert.Was Sie brauchen, ist eine Klasse, die die Felder
listOfRecipients
,message
,captcha
,image
und haben.. handle(@RequestBody YourObject obj)
headers="Accept: application/json"
im request-mapping.byte[]