[英]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中已删除。
这是我第一次在这里发布信息,因此我们将不胜感激。
org.json库未与Jersey集成。 因此,JSON不会自动解析为POJO,反之亦然。
您最好使用以下模块之一来提供JSON支持。 它们全部与Jersey 2.x集成:
我会推荐杰克逊。 此答案中完整描述了将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.