2016-12-27 193 views
3

我試圖爲使用JSON的Jersey RS構建Java Web服務的POST方法,但是當我提交一些示例JSON時,我收到了400錯誤的請求錯誤。400對POST服務的錯誤請求

@Path("/Register") 
@Stateless 
public class RegistrationController { 

    @POST 
    @Path("/Test") 
    @Produces(MediaType.APPLICATION_JSON) 
    @Consumes(MediaType.APPLICATION_JSON) 
    public String postHelloWorld(String message){ 
     return "temp"; 
    } 

以上是爲後方法的代碼,並且當我試圖使用API​​服務諸如郵遞員提交POST請求

http://localhost:37846/Register/Test

使用郵差設置的報頭Content-Type as application \ json,以及一些示例JSON,如

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 

我收到400錯誤的請求錯誤。


響應體:

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <title>GlassFish Server Open Source Edition 4.1.1 - Error report</title> 
    <style type="text/css"> 
     <!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}HR {color : #525D76;}--> 
</style> 
</head> 

<body> 
    <h1>HTTP Status 400 - Bad Request</h1> 
    <hr/> 
    <p><b>type</b> Status report</p> 
    <p><b>message</b>Bad Request</p> 
    <p><b>description</b>The request sent by the client was syntactically incorrect.</p> 
    <hr/> 
    <h3>GlassFish Server Open Source Edition 4.1.1 </h3> 
</body> 

</html> 

試圖打印使用System.out中失敗了,因爲沒有一個通用的是System.out.print( 「你好」)消息的消息,這使我相信該方法沒有被調用。
由於我沒有收到404錯誤,當我調整數據類型時,我將收到415不支持的媒體類型錯誤,這就排除了諸如不正確的映射之類的內容。
JSON不是格式錯誤,所以問題可能在於提交的請求或Web服務如何處理請求。

+1

調試程序!打印輸入的消息。請求是否適用於不使用JSON的方法? – ppasler

+2

400錯誤請求表示/測試端點期望的參數不同於您發送的參數。您是否使用JSON對象映射器(如Jackson)?如果是這樣,您需要在JSON中創建一個包含與菜單相同值的對象(Id,value,popup) –

+1

400意味着您大部分時間都發送了錯誤的數據。你確定沒有錯誤描述的響應主體嗎?一個好的服務應該有它。 – cen

回答

1

問題是標題中的拼寫錯誤。

Content-Type application\json 

是什麼導致了400錯誤。
能解決問題的標題是

Content-Type application/json