当前位置: 首页 > 知识库问答 >
问题:

REST Webservice返回415-不支持的媒体类型

祁宾白
2023-03-14

我使用jax-rs和jersey创建了一个REST webservice,它应该在POST请求上使用JSON。我的web服务类如下所示:

@Path("/webhookservice")
public class Webhook {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response readData (Song song) {

        // Prints out the song info
        System.out.println("SONG INFO \n=======================");
        System.out.println("songname: " + song.getSongname());
        System.out.println("artist: " + song.getArtist());

        // Repsonse with a HTTP 200 OK
        Response response = Response.status(200).build();
        return response;

    }

}

我的歌曲课:

public class Song {

    private String songname;
    private String artist;

    public String getSongname () { return this.songname; }
    public String getArtist () { return this.artist; }

    public void setSongname (String songname) { this.songname = songname; }
    public void setArtist (String artist) { this.artist = artist; }

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

    <servlet>
        <servlet-name>SnapScan-Webhook</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>za.co.lancet.service</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SnapScan-Webhook</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

我有点用RESTClient,嗯,rest Client...以下是我发送的内容的截图:

当我发送它时,我得到415不受支持的媒体类型错误。有人知道为什么吗?

共有1个答案

羊舌阎宝
2023-03-14

您需要发送request-headercontent-type:application/json。似乎REST-Client不会自动为您添加这个头。

 类似资料:
  • 如何使用C#在SQL Server数据库上执行CRUD操作? 例如,假设有一个带有以下列的DB表: 我希望发布一个新员工的信息到该数据库。什么是实现这一目标的有效方法? 我当前的: 下面是模型: 当我用以下输入测试我的应用编程接口时: 我得到这个错误: HTTP/1.1 415不支持的媒体类型 数据库中没有插入任何内容。 如能提供任何指导,将不胜感激。 : 根据请求生成的原始错误消息: HTTP/

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 问题内容: 我正在尝试使用jQuery 1.6(Jackson 2.1.1 和Spring 3.2.0 )通过JSON通过该方法向数据库中插入和/或更新数据。 JS代码如下。 通过URL映射的Spring控制器内部的方法如下。 服务器按照问题的含义进行响应, 415不支持的媒体类型 标头信息如下所示。 整个文件如下。 当我删除一个方法参数并仅用于接受请求参数时,它可以工作。 问题答案: 浏览器发送

  • 问题内容: 我正在使用Spring 3.2,并尝试使用ajax发布请求来提交json对象数组。如果相关,我转义了所有特殊字符。 我的HTTP状态为415。 我的控制器是: jQuery是: 我发布的数组中的对象之一的示例是以下json: 错误是: 为什么会发生此错误-有人知道吗? 问题答案: 您可以尝试使用。它没有任何问题