POST with jersey Java return 415不支持的媒体类型

时间:2017-02-15 11:28:43

标签: java post jersey

所以我几天来一直在努力解决这个问题。我在互联网上到处搜寻(我认为?)但我找不到解决方案。

所以我在我的glassfish服务器上发了这篇文章:

curl -H "Content-Type: application/json" -X POST -d '{"Description":"hallotesCURL","Latitude":30,"Longitude":126,"Name":"testCURL"}' http://localhost:8080/Mesta/location/save

但是当我使用以下cURL命令发布时:

oID

我将始终收到错误415不支持的媒体类型。 我不使用maven所以我没有pom.xml。 我认为也没有web.xml文件,但我不确定这是在最新版本的java中删除的。

这是我第一次在这里发帖,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

JSON提供程序

org.json库未与Jersey集成。因此,JSON不会自动解析为POJO,反之亦然。

您最好使用以下模块之一来提供JSON支持。所有这些都与Jersey 2.x整合:

使用Jackson作为Jersey的JSON提供者

我会推荐杰克逊。使用Jackson作为JSON提供程序的步骤在answer中有详细描述,总结如下:

jersey-media-json-jackson模块添加到test

pom.xml

如果你没有使用Maven,请确保在类路径上拥有所有jersey-media-json-jackson依赖项。

然后在JacksonFeature / Application子类中注册ResourceConfig

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.25.1</version>
</dependency>
@ApplicationPath("/api")
public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(JacksonFeature.class);
        return classes;
    }
}

有关详细信息,请查看泽西岛documentation