2016-12-27 6 views
3

Я пытаюсь создать метод POST для веб-службы Java с использованием Jersey RS, который потребляет JSON, однако я получаю ошибку 400 ошибок при отправке некоторого образца JSON.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, такие как Почтальон, чтобы отправить запрос на запись в

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 Unsupported Media type, это исключает что-то вроде неправильного сопоставления.
JSON не искажен, поэтому проблема, вероятно, связана либо с предоставленным запросом, либо с тем, как веб-служба обрабатывает запрос.

+1

отладки программы! Распечатайте входящее 'сообщение'. Выполняет ли запрос методы без использования JSON? – ppasler

+2

400 Bad Request означает, что конечная точка/test ожидает разные параметры, чем вы отправляете. Используете ли вы JSON-объект, например, Jackson? Если это так, вам нужно создать объект, содержащий те же значения, что и в меню JSON (Id, value, popup) –

+1

400 означает, что вы часто отправляете плохие данные. Вы уверены, что нет тела ответа с описанием ошибки? Хорошее обслуживание должно иметь это. – cen

ответ

1

Проблема была опечаткой в ​​заголовке.

Content-Type application\json 

Было то, что вызывало ошибку 400.
Заголовок, который решает проблему является

Content-Type application/json 
Смежные вопросы