2013-11-24 71 views
1

我已经设置了一个spring RESTful Web服务,用于接收用户的用户名和密码。一直在Spring IO对Spring REST Web服务的POST请求失败,并显示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参数,以服务为通过谷歌浏览器插件,邮递员,但我测试得到“HTTP:因为请求的实体是不被请求方式所请求的资源支持的格式415..The服务器拒绝这个请求。”

enter image description here

有没有人有一个想法我做错了什么?

+0

tsure:你能解决它吗?我看到了同样的问题。 –

+0

[Spring MVC 3.1 REST服务post方法返回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

通过POSTMAN尝试了JSON,这是一个REST客户端 - Google chrome扩展,仍然没有运气,仍然从服务器获得相同的响应。 – tsure

+0

你试过XML吗? – EJK

+0

您可以创建一个方法(a)将URI映射到GET请求,(b)仅在响应中返回单个预填充的UserDetail对象。在浏览器中点击该URI。它返回的内容有望显示服务器配置的格式。 – EJK

1

设置标题:

Content-Type=application/json 

这解决了我的问题!

相关问题