所以我正在尝试创建一个使用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 请求一起发送?