2015-05-18 7 views
0

Мне нужна помощь в создании запроса POST для моего контроллера Spring Spring Spring.Java Spring Restcontroller Post

Это мой контроллер -

@RestController 
@RequestMapping("hedgesimulator/") 
public class HedgeSimulatorController { 

    @RequestMapping(value = "hedgesim/", method = RequestMethod.POST) 
    @ResponseBody 
    public HedgeSimulatorLog putHedgeSimulation(
     @RequestBody HedgeSimulatorLog hedgeSimulatorLog) { 

     System.out.println(hedgeSimulatorLog.toJsonString()); 
     return hedgeSimulatorLog; 
    } 
} 

Я использую Chrome, «Advanced Rest Client» плагин, чтобы после моего запроса на мой URL (я уверен, что мой локальный работает должным образом, и т.д.)

Что мне нужно добавить в мой заголовок?

Я получаю сообщение об ошибке для «HTTP 400 - отчета Статус: запрос, отправленный клиентом синтаксически неправильно»

Пожалуйста, помогите!

+0

Возможно, вы захотите установить весовые уровни регистрации MVC до DEBUG, а также проверить журналы доступа к серверу для получения дополнительной информации о запросе, который выполняется. Похоже, что запрос неверен - возможно, попробуйте сделать запрос с помощью curl или другого инструмента командной строки. Наконец, '@ ResponseBody' избыточен в' @ RestController', я думаю. – cjstehno

+0

Я думаю, что полезная нагрузка запроса не может быть преобразована в компонент HedgeSimulatorLog. Можете ли вы разместить компонент HedgeSimulatorLog и образец полезной нагрузки JSON? –

ответ

0

Чтобы передать объект контроллеру, вы должны настроить HttpMessageConverter, который проводит сериализацию и обеззараживание этого объекта. Например, если вы хотите передать объект контроллеру как JSON, установите параметр MappingJackson2HttpMessageConverter в качестве параметра в объявлении mvc в конфигурационном файле весны.

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

Если преобразователь http-сообщений настроен правильно, возможно, запрос был неправильно сформирован.

0

@RequestMapping (значение = "/ hedgesim /", метод = RequestMethod.POST)

0

Попробуйте со следующими, надеюсь, что вы могли бы решить эту проблему:

  1. Поскольку вы используете @RestController аннотацию, поэтому нет необходимости снова использовать аннотацию @ResponseBody, что является избыточным.

  2. Если вы используете весеннюю загрузку, убедитесь, что вы добавили эту зависимость ниже.

    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    
  3. Если проект не весна загрузки, а затем добавить зависимость для Джексона: com.fasterxml.jackson.databind.ObjectMapper

  4. Просто, чтобы убедиться, что тело запроса является правильным, что вы можете сделать это, выполнить метод запроса первым, получить ответ JSON, передают тот же JSON для POST, так что это может избежать некоторых ошибок typo/human при создании данных JSON.

Надеюсь, это помогает.

0

Вы можете выполнить следующие проверки.

  1. Validate запрос тела вы отправляете через некоторые интернет-инструмент, как JSonLint.
  2. Проверьте, зарегистрирован или зарегистрирован MappingJackson2HttpMessageConverter. По умолчанию Spring регистрирует этот конвертер, если у вас есть jar в пути к классам.
  3. Не используйте @ResponseBody, если вы используете @RestController. Так что удалите его.

Полный пример по созданию и потребляющих REST службы с помощью Spring 4.0, вы можете посетить Techno Spots.