簡體   English   中英

含球衣Java的POST返回415不支持的媒體類型

[英]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中已刪除。

這是我第一次在這里發布信息,因此我們將不勝感激。

JSON提供者

org.json庫未與Jersey集成。 因此,JSON不會自動解析為POJO,反之亦然。

您最好使用以下模塊之一來提供JSON支持。 它們全部與Jersey 2.x集成:

將Jackson用作Jersey的JSON提供程序

我會推薦傑克遜。 答案中完整描述了將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM