【问题标题】:HTTP/1.1 415 Unsupported Media Type while processing JSONHTTP/1.1 415 处理 JSON 时不支持的媒体类型
【发布时间】:2018-07-27 09:19:51
【问题描述】:

我的代码使用 Xml,但使用 Json 失败

使用 RestEasy UI 请求:

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

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

类 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;
    }

}

【问题讨论】:

  • 定义:fails with Json
  • 什么是 RestEasy UI?我假设这意味着您使用的是 RESTEasy 而不是 Jersey(或没有)?请说清楚。服务器端有什么异常吗?

标签: java json gradle jersey javabeans


【解决方案1】:

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

 public people(){
   }

【讨论】:

    【解决方案2】:

    将以下 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>
    

    【讨论】:

      【解决方案3】:

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

      javax.ws.rs.NotSupportedException: RESTEASY003200: 找不到 消息正文阅读器类型:类 people.People of 内容类型: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>
      

      【讨论】:

        猜你喜欢
        • 2013-01-16
        • 2017-07-05
        • 2015-08-29
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 1970-01-01
        • 2014-04-29
        相关资源
        最近更新 更多