我已经使用JAX-RS和Resteasy建立了一个Web服务。 GET请求正在运行但是当我通过POST发送JSON-Request时,我收到一条415 Unsupported Media Type
错误消息。
以下代码显示了我当前的实现:
@Path("ws")
public class YagiSolverWebservice
{
@GET
public String hello()
{
return "HELLO!";
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void solveGrid(Test test)
{
System.out.println("Test: " + test);
}
}
修改
我正在使用POSTMAN测试Webserive作为chrome插件。在chrome请求中生成以下标头:
POST /YagiSolver/ws HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 34 Cache-Control: no-cache Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36 Content-Type: application/json Accept: */* Accept-Encoding: gzip,deflate,sdch Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
答案 0 :(得分:0)
你应该在@Consumes中提供mime类型
@Consumes的值是可接受MIME类型的String数组。例如:
@Consumes({"text/plain,text/html"})
以下示例显示如何在类和方法级别应用@Consumes:
@Path("/myResource")
@Consumes("multipart/related")
public class SomeResource {
@POST
public String doPost(MimeMultipart mimeMultipartData) {
...
}
@POST
@Consumes("application/x-www-form-urlencoded")
public String doPost2(FormURLEncodedProperties formData) {
...
}
}
您可以在http://docs.oracle.com/cd/E19798-01/821-1841/giepu/index.html
中详细了解相关信息答案 1 :(得分:0)
您需要检查Accept
和Content-Types
标题,并且必须是application/json
。
因为您的服务仅消耗json
。
'Accept': 'application/json',
'Content-Type': 'application/json'