使用jersey Java返回415的POST不支持的媒体类型

使用jersey Java返回415的POST不支持的媒体类型,java,post,jersey,Java,Post,Jersey,所以我已经为这个问题挣扎了几天了。我在互联网上到处搜索过(我想是吧?),但我找不到解决办法 我的glassfish服务器上有一篇帖子: @POST @Path("/save") @Consumes(MediaType.APPLICATION_JSON) public boolean putLocation(Location loc) { boolean succes = false; try { System.out.println(loc.toString())

所以我已经为这个问题挣扎了几天了。我在互联网上到处搜索过(我想是吧?),但我找不到解决办法

我的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提供者 该库不与Jersey集成。因此,JSON不会自动解析为POJO,反之亦然

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

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

将模块添加到您的
pom.xml


org.glassfish.jersey.media
类路径上的依赖项

然后在您的/子类中注册:

@ApplicationPath(“/api”)
公共类MyApplication扩展了应用程序{
@凌驾
public Set>classes=新的HashSetJSON提供程序
该库不与Jersey集成,因此JSON不会自动解析为POJO,反之亦然

您最好使用以下模块之一提供JSON支持。所有模块都与Jersey 2.x集成:

使用Jackson作为Jersey的JSON提供程序 我建议您使用Jackson。本文详细介绍了使用Jackson作为JSON提供程序的步骤,总结如下:

将模块添加到您的
pom.xml


org.glassfish.jersey.media
类路径上的依赖项

然后在您的/子类中注册:

@ApplicationPath(“/api”)
公共类MyApplication扩展了应用程序{
@凌驾

public Set>classes=new hashset正如您在问题中提到的,最新版本的Java中没有删除部署描述符
web.xml
。在基于Servlet 3.0的应用程序中,
web.xml
成为可选的,因为大多数配置都可以通过注释进行。您的方法应该是什么类型的媒体要生成?如果是JSON,请使用
@products(MediaType.APPLICATION\u JSON)注释您的资源方法
并将
Accept:application/json
标题添加到您的请求中。另外,请确保您注册了json提供商,如Jackson。有关更多详细信息,请参阅此。但我认为只有在返回json时才需要生成和接受,还是我弄错了?我将再次查看Jackson。我目前有org.json p我的库中的包如果您想要JAR,请查看
web.xml
部署描述符在最新版本的Java中没有被删除,正如您在问题中提到的那样。
web.xml
在基于Servlet 3.0的应用程序中成为可选的,因为大多数配置都可以通过注释进行。您是什么类型的媒体应该生成的r方法?如果是JSON,请使用
@products(MediaType.APPLICATION\u JSON)注释您的资源方法
并将
Accept:application/json
标题添加到您的请求中。另外,请确保您注册了json提供商,如Jackson。有关更多详细信息,请参阅此。但我认为只有在返回json时才需要生成和接受,还是我弄错了?我将再次查看Jackson。我目前有org.json p我的图书馆里的包装如果你想要罐子,请检查一下,我很快就会尝试!非常感谢!我很快就会尝试!非常感谢!