Spring MVC的3.1 REST服务POST方法返回415(Spring MVC 3.1 RE

2019-07-17 23:49发布

我做了Spring MVC的控制器,我仍然用POST操作得到的问题。 我读过许多计算器解决方案,而要解决我的问题。

我的成就在此刻:

  • 我发出GET请求一个ID,并返回转化为成功的JSON对象。
  • 我无法发送POST用JSON的身体要求, return = 415 UNSUPPORTED_MEDIA_TYPE

1)我加入到我的pom.xml杰克逊API:1.8.5

2)我的Spring配置文件:我添加了所有必需的部件:

  • 的ViewResolver
  • org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
  • MappingJacksonHttpMessageConverter
  • MVC:注解驱动
  • 扫描我的控制器

3)我的模型对象很简单:用ID,姓名和金额的账户

@Document
public class Account implements Serializable {

    private static final long serialVersionUID = 9058933587701674803L;

    @Id
    private String id;
    private String name;
    private Double amount=0.0;

    // and all get and set methods 

4)最后我简化控制器类:

@Controller
public class AdminController {

    @RequestMapping(value="/account", method=RequestMethod.POST, 
             headers = {"content-type=application/json"})
    @ResponseStatus( HttpStatus.CREATED )
    public void addAccount(@RequestBody Account account){ 
        log.debug("account from json request " + account);
    }


    @RequestMapping(value="/account/{accountId}", method=RequestMethod.GET)
    @ResponseBody
    public Account getAccount(@PathVariable("accountId") long id){
        log.debug("account from json request " + id);
        return new Account();
    }
}

5)在客户端,我只是执行命令卷曲:在成功GET命令:

curl -i -GET -H 'Accept: application/json'  http://myhost:8080/compta/account/1

POST命令,它失败:

curl -i -POST -H 'Accept: application/json' -d '{"id":1,"name":"test",amount:"0.0"}' http://myhost:8080/compta/account

任何想法,我要去哪里错了吗?

Answer 1:

那么,“UNSUPPORTED_MEDIA_TYPE”应该是一个暗示。 你curl命令实际发送:

Content-Type: application/x-www-form-urlencoded

只需添加明确Content-Type头,你是好去:

curl -v -i -POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"id":1,"name":"test",amount:"0.0"}' http://myhost:8080/compta/account


Answer 2:

试试这个 :

curl -i -POST -H "Accept: application/json" -H "Content-type: application/json" -d '{"id":1,"name":"test",amount:"0.0"}' http://myhost:8080/compta/account


文章来源: Spring MVC 3.1 REST services post method return 415