其余 Web 服务(post) 消耗 json 不起作用



所以我正在尝试创建一个使用json的简单Web服务帖子。但是我得到错误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 时它不起作用。为了测试我正在使用的网络服务 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 但默认情况下它可能不发送内容类型标头

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

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

您能否确保将Content-Type: application/json与 POST 请求一起发送?

最新更新