gpt4 book ai didi

java - 带有 Jersey Java 的 POST 返回 415 不支持的媒体类型

转载 作者:行者123 更新时间:2023-12-01 20:56:38 26 4
gpt4 key购买 nike

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

所以我的 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 。 answer 中完整描述了使用 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对类路径的依赖。

然后注册JacksonFeature在你的Application/ResourceConfig子类:

@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 documentation .

关于java - 带有 Jersey Java 的 POST 返回 415 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com