繁体   English   中英

REST Web服务(发布)消耗JSON不起作用

[英]Rest web services(post) consumes json not working

因此,我试图创建一个使用json的简单Web服务帖子。 但是我RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003065: Cannot consume content type错误RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003065: Cannot consume content type

我的网络服务:

@POST
@Produces(MediaType.APPLICATION_XML)
@Path("teste1")
@Consumes(MediaType.APPLICATION_JSON)
public Response teste1(String product) {

    String result = "Product created : " + product;
    System.out.println("resultado");
    System.out.println(result);
    return Response.ok() //200
            .entity("<erro> none </erro>")
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
            .header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build();

}

我也尝试做:

 @Consumes("application/json")

但是我遇到了同样的错误。 如果可以,我可以使其工作

  @Consumes("*/*")

但是当我说它使用json时,我不明白为什么它不起作用。 要测试Web服务,我正在使用https://apitester.com/ 随着以下邮政数据:

{
    "key" : "value",
    "array" : [
        { "key" : 1 },
        { "key" : 2, "dictionary": {
                "a": "Apple",
                "b": "Butterfly",
                "c": "Cat",
                "d": "Dog"
            } },
        { "key" : 3 }
    ]
}

一般而言

@Consumes("application/json")

指定Web服务可以处理的内容媒体类型。

但是,您可能还需要在Content-Type标头中为您的请求显式指定适当的类型。

我不熟悉https://apitester.com,但默认情况下它可能不发送Content-Type标头

例如,在这种情况下,您的服务器可以将请求正文视为纯文本。 该请求不会路由到您的端点,因为它不是为纯文本设计的。

设置@Consumes(*/*)解决此问题,因为错误的媒体类型也会与该模式匹配。

您能否确保将POST请求发送给Content-Type: application/json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM