繁体   English   中英

含球衣Java的POST返回415不支持的媒体类型

[英]POST with jersey Java return 415 unsupported media type

所以我已经为这个问题苦苦挣扎了几天。 我在互联网上到处搜索(我认为吗?),但找不到解决方案。

所以我在我的glassfish服务器上有这个帖子:

@POST
@Path("/save")
@Consumes(MediaType.APPLICATION_JSON)
public boolean putLocation(Location loc) {
    boolean succes = false;
    try {
        System.out.println(loc.toString());
        succes = LocationController.getController().locationSetter().saveLocation(loc);
    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
        Logger.getLogger(LocationResource.class.getName()).log(Level.SEVERE, null, ex);
    }
    return succes;
}

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

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

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

这是我第一次在这里发布信息,因此我们将不胜感激。

JSON提供者

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

您最好使用以下模块之一来提供JSON支持。 它们全部与Jersey 2.x集成:

将Jackson用作Jersey的JSON提供程序

我会推荐杰克逊。 答案中完整描述了将Jackson用作JSON提供程序的步骤,并在下面进行了总结:

jersey-media-json-jackson模块添加到您的pom.xml

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

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

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

@ApplicationPath("/api")
public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(JacksonFeature.class);
        return classes;
    }
}
@ApplicationPath("/api")
public class MyApplication extends ResourceConfig {

    public MyApplication() {
        register(JacksonFeature.class);
    }
}

有关更多详细信息,请参阅Jersey 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM