使用jersey Java返回415的POST不支持的媒体类型
所以我已经为这个问题挣扎了几天了。我在互联网上到处搜索过(我想是吧?),但我找不到解决办法 我的glassfish服务器上有一篇帖子:使用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())
@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集成:
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我的图书馆里的包装如果你想要罐子,请检查一下,我很快就会尝试!非常感谢!我很快就会尝试!非常感谢!