处理JSON时HTTP / 1.1 415不支持的媒体类型

时间:2018-07-27 09:19:51

标签: java json gradle jersey javabeans

我的代码在Xml上运行,但在Json上失败

使用RestEasy UI的请求:

POST /api/people HTTP/1.1
Content-Type:application/json

{
    "name":"developer",
    "age":"25",
    "address":"address"
}

Class Resource.java

package people;

@Path("/api")
public class Resource {

    @GET
    @Produces("text/plain")
    @Path("helloworld")
    public String helloWorld() {
        return "Hello World!";
    }

    @POST
    @Produces("text/plain")
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("people")
    public String updatePeople(People request)  { 
        People p = new People();
        p.setName(request.getName());

        return p.getName(); 
    }
}

并分类People.java

package people;

@XmlRootElement
public class People {

    private String name;
    private String age;
    private String address;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }

}

3 个答案:

答案 0 :(得分:1)

在bean类People中添加默认构造函数。

 public people(){
   }

答案 1 :(得分:1)

将以下jar添加到您的类路径中。     jersey-media-json-jackson.jar

如果使用的是Maven,请将其添加到POM.xml文件中。

<dependency>
   <groupId>org.glassfish.jersey.media</groupId>
   <artifactId>jersey-media-json-jackson</artifactId>
   <version>2.27</version>
</dependency>

答案 2 :(得分:0)

可能您在服务器端遇到以下异常:

  

javax.ws.rs.NotSupportedException:RESTEASY003200:找不到   消息正文阅读器的类型:类人。   内容类型:application / json

在这种情况下,您需要向项目中添加resteasy-jackson2-provider依赖项;因此,假设您正在使用Maven,请尝试将其放入pom.xml

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson2-provider</artifactId>
    <version>3.6.0.Final</version>
</dependency>