我已经设置了一个Spring RESTful Web服务,用于从用户那里获取用户名和密码。按照Spring IO
上的教程进行操作我的服务设置为接受用户名和密码,如下所示:
@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);
}
}
我通过Google Chrome插件POSTMAN将POST参数发送到服务作为测试,但我得到“ HTTP:415 ..服务器拒绝了此请求,因为请求实体的格式不受请求的资源支持对于要求的方法。“
有没有人知道我做错了什么?
答案 0 :(得分:1)
设置标题:
Content-Type=application/json
这解决了我的问题!
答案 1 :(得分:0)
HTTP 415响应代码表示服务器预期使用不同内容类型发布的数据。您似乎只是发布了一个包含用户名,密码和电子邮件作为参数的表单。这将导致内容类型的application / x-www-form-urlencoded。
尝试使用内容类型的application / xml或application / json进行发布。在帖子正文中,您需要将数据放入相应的格式中。例如,如果使用application.xml,则XML主体应类似于:
<userDetail>
<userName>xxx</userName>
<password>xxx</password>
<email>xxx</email>
</userDatail>
当然,确切的格式(即元素名称)取决于XML绑定。实际上,无论预期的格式是XML还是JSON还是其他东西,也可能是服务器配置。
使用浏览器无法轻松发布此类型的请求。您将需要一些其他HTTP客户端。像SOAP-UI这样的工具可能是一个不错的选择。