2016-06-21 3 views
0

Я пытаюсь сделать POST вызов с JSON к приложению Spring загрузки, что я бег, и я получаю следующую ошибку каждый раз, когда я сделать пост позвонитьПолучение JSON Post работать в Spring ботинке

Request method 'POST' not supported 

Вот основная схема моего контроллера,

@RestController 
public class MessagesController { 

    @RequestMapping(value = "/messages", method = RequestMethod.POST) 
    public @ResponseBody Answer processMessage(@RequestBody Message message) throws Exception{ 
     System.out.println("HERE"); 

     Answer a = new Answer(5); 

     return a; 
    } 

    @ExceptionHandler 
    void handleException(Exception e, HttpServletResponse response) throws IOException { 
     response.sendError(HttpStatus.CONFLICT.value()); 
    } 
} 

Message и Answer являются POJOs

public class Message implements Serializable{ 
    private int id; 
    private int description; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getDescription() { 
     return description; 
    } 
    public void setDescription(String description) { 
     this.description= description; 
    } 
} 

public class Answer implements Serializable{ 
    private int answer; 

    public Answer(int answer){ 
     this.answer = answer; 
    } 

    public int getAnswer() { 
     return answer; 
    } 

    public void setAnswer(int answer) { 
     this.answer = answer; 
    } 
} 

Я хотел бы иметь возможность POST JSON для моего контроллера, а затем получать сообщение JSON. Как я могу заставить это работать без ошибок? Я отправляю к http://localhost:8080/messages через SoapUI

+4

Я могу чтобы вызвать без проблем пример, который вы отправили. Вот рабочий пример: [gitHub] (https://github.com/ddiehl/spring-boot-web-test) В Message POJO была одна ошибка компиляции. описание было int, но getter и setter были с String Вызов с помощью curl: 'curl -H 'Content-Type: application/json" -X POST -d' {"id": "1", "descripion": «Тестовое сообщение»} «http: // localhost: 8080/messages' –

+0

У вас есть настраиваемое сервлет серфинга диспетчера где-нибудь в приложении? – luboskrnac

+0

@ DanielDiehl Ваш пример был очень полезным! Я перевел ваш код на мой, и он сработал. Спасибо! – user906153

ответ

1

Так что это то, что я думаю:
Тип описания не должно быть строк вместо INT?

private int description; 
public String getDescription() { 
    return description; 
} 
public void setDescription(String description) { 
    this.description= description; 
} 

Ваш пост JSON должен быть: (предположим, что идентификатор целое и Descripion является строка)

{"id": 1, "descripion":"Test message"} 

Try, чтобы превратить ваш отдых контроллер, как это:

@RestController 
@RequestMapping("messages") 
public class MessagesController { 
    @RequestMapping(method = RequestMethod.POST) 
    public Answer processMessage(@RequestBody Message message) throws Exception{ 
Смежные вопросы