[英]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.