【问题标题】:415 error code is being thrown even after setting content type即使在设置内容类型后也会抛出 415 错误代码
【发布时间】:2026-01-16 05:25:01
【问题描述】:

我已使用以下代码创建表:

CREATE TABLE   IF NOT EXISTS TRENDING (ID SERIAL   PRIMARY KEY , TOPIC TEXT , CATEGORY   TEXT ,QUESTION TEXT,ANSWER TEXT,PROFILEPIC TEXT NOT NULL,TICK TIMESTAMP,url TEXT);

我正在使用以下代码来接受发布请求并将日期插入 postgres db。

@POST
@Path("addTrending")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_JSON)
public static String addTrending(Trending trending){
    String songString = "requesting";
    ArrayList<Success> output = new ArrayList();

    try {

        Connection connection = MyResource.getConnection();
        PreparedStatement stmt = connection
        .prepareStatement("INSERT INTO TRENDING (TOPIC,CATEGORY,QUESTION,ANSWER,PROFILEPIC,TICK,URL) VALUES(?, ? , ? , ? , ? , ? , ? )");
        stmt.setString(1, trending.getTopic());
        stmt.setString(2, trending.getCategory());
        stmt.setString(3, trending.getQuestion());
        stmt.setString(4, trending.getAnswer());
        stmt.setString(5, trending.getProfilePic());
        stmt.setTimestamp(6, trending.getTimeStamp());
        stmt.setString(7, trending.getUrl());
        songString = "success";

    } catch(Exception ex){
        songString = "failure";
    }
    output.add(new Success(songString));

    return output.toString();
}

以下是我正在发出的 JSON 请求:

{
  "timeStamp": "2016-10-11 14:11:52.516596",
  "question": "what?",
  "answer": "yes",
  "profilepic": "assa",
  "topic": "Paul",
  "id": 2,
  "category": "FIlter",
  "url": "a"   
}

我已经正确使用了消费者注解。我还将application/json 设置为我的内容类型,但我仍然得到:

HTTP 状态 415 - 不支持的媒体类型

我怎样才能解决这个问题?

【问题讨论】:

  • 但是类趋势无法解析json
  • 但是,如果我将字符串作为参数传递,并且尝试将字符串转换为 json 对象并执行插入操作,我可以做到。

标签: postgresql web-services heroku jersey jax-rs


【解决方案1】:

添加这个依赖

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

【讨论】: