2013-11-24 1 views
1

Я установил веб-службу весны RESTful для ввода имени пользователя и пароля от пользователя. Были после урока по Spring IOЗапрос POST для веб-службы Spring REST сбой с HTTP-статусом 415

Моя служба создана, чтобы принять имя пользователя и пароль, как показано ниже:

@Controller 
    @RequestMapping("/users") 
    public class UserCommandController { 
     private static Logger log = LoggerFactory.getLogger(UserCommandController.class); 
     @RequestMapping(method = RequestMethod.POST) 
     public ResponseEntity createUser(@RequestBody UserDetail userDetail, UriComponentsBuilder builder) { 
      User newUser = new User(); 
      newUser.setEmail(userDetail.getEmail()); 
      newUser.setPassword(userDetail.getPassword()); 
      newUser.setUserName(userDetail.getUsername()); 
      try { 
       UserFactory.getInstance().saveNewUser(newUser); 
      } catch(UserException ue) { 
       log.error("Saving user failed. Exception: "+ue.getMessage()); 
      } 
      return new ResponseEntity(HttpStatus.OK); 
     } 
    } 

Я посылаю параметры POST на службу в качестве теста с помощью Google Chrome плагин POSTMAN, но я получить «HTTP: сервер 415..The отказался этот запрос, потому что объект запроса в формате, который не поддерживается запрашиваемым ресурсом для запрошенного метода

enter image description here

Кто-нибудь есть идея, что я делаю неправильно?

+0

tsure: где вы можете его решить? Я вижу ту же проблему. –

+0

Возможный дубликат [Spring MVC 3.1 REST services post method return 415] (http://stackoverflow.com/questions/14222681/spring-mvc-3-1-rest-services-post-method-return-415) – Raedwald

ответ

0

Код ответа HTTP 415 означает, что сервер ожидал данные, размещенные с другим типом контента. Похоже, вы просто разместили форму с именем пользователя, паролем и электронной почтой в качестве параметров. Это приведет к созданию контента типа application/x-www-form-urlencoded.

Попробуйте опубликовать контент с типом приложения/xml или application/json. В вашем почтовом теле вам нужно будет поместить ваши данные в соответствующий формат. Например, если вы используете application.xml, тело XML должен выглядеть примерно так:

<userDetail> 
    <userName>xxx</userName> 
    <password>xxx</password> 
    <email>xxx</email> 
</userDatail> 

Конечно точный формат (то есть имена элементов) зависит от связывания XML. Фактически, независимо от того, является ли ожидаемый формат XML или JSON или что-то еще, вероятно, является конфигурацией сервера.

Проводка такого запроса нелегко сделать с помощью браузера. Вам понадобится другой HTTP-клиент. Инструмент, подобный SOAP-UI, может быть хорошей ставкой.

+0

I попробовал JSON через POSTMAN, который является клиентом REST - расширение chrome Google, по-прежнему не повезло, все равно получает тот же ответ от сервера. – tsure

+0

Вы пробовали XML? – EJK

+0

Можете ли вы создать метод, который (а) сопоставляет URI с запросом GET, (b) просто возвращает единый предварительно заполненный объект UserDetail в ответе. Удалите этот URI в своем браузере. Что он возвращает, мы надеемся, покажем вам формат, на который настроен сервер. – EJK

1

Установить заголовок:

Content-Type=application/json 

Это решило мою проблему!

Смежные вопросы