2011-08-11 42 views
1

我有一個Spring Web服務,我必須做一個Post。這是目前的簽名。400做春季休息時發生錯誤

ScreenResult sendScreenAsPostcard(@RequestParam String listOfRecipients, @RequestParam String message, @RequestParam String userId, @RequestParam String captcha, @RequestParam MultipartFile image) 

Flash應用程序正在調用此函數。我正在使用前端並使用Firebug查看參數。當我通過這個。我得到

400錯誤的請求。

當我更改簽名只是爲了確保我能打到這一切,

ScreenResult sendScreenAsPostcard(@RequestBody string) 

,並在字符串中打印。它打到服務,我相信它能夠讀取參數,雖然我不知道它是否準確讀取多部分文件。我的問題是我做錯了什麼?

Flash應用程序正在傳遞JSON。

這是身體的相關部分。

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":""} 
+1

嘗試在調試器中運行您的Web應用程序,並在您的'HandlerExceptionResolver'中放置斷點。無論用於綁定參數應該拋出一個通過這個類的異常。 – stefan

回答

-1

@RequestParam是關於HTTP GET/POST參數的。而你沒有這樣的參數,所以你的提交是一個「不好的請求」。另一方面,您的請求主體可以轉換爲一個對象(它是JSON),所以第二個可以工作。

你需要的是一個具有領域listOfRecipientsmessagecaptchaimage並有.. handle(@RequestBody YourObject obj)

+0

嘗試這種方法,我得到一個415 Unsupported媒體類型,這實際上是一個積極的一步,但不知道這是指什麼。 –

+0

嘗試在請求映射中指定'headers =「Accept:application/json」''。 – Bozho

+0

首先感謝您的幫助。很多進步都歸功於你,但有一點是當我使用多部分文件時,可能會出現500錯誤。多部分必須以不同的方式處理嗎?當然是 –

0

我有類似的錯誤,我發現我某個字段設置爲字符串,這應該是一個數量的類。在我改正之後,這個帖子成功了。 :)