簡體   English   中英

無法從Jersey GET響應獲取JSON數據

[英]Cannot get JSON data from Jersey GET response

我正在開發一個寧靜的Web客戶端,並嘗試從GET方法的響應中獲取JSON有效負載。 我正在使用澤西島。 但是我只是無法使用response.getEntity()方法讀取JSON數據。 我嘗試了許多方法,包括response.bufferEntity(),但輸出始終保持為空。 以下是我的代碼和輸出,此外,我還可以在Wireshark中捕獲的響應數據包中看到JSON數據。 我非常感謝每個嘗試幫助找出原因或提供解決方案的人。 謝謝!

碼:

    public JSONObject Get(String requestPath){

    ClientResponse response = webResource.path(requestPath)
            .header("Content-Type", contTypeHeader )
            .header("Accept",acceptHeader)
            .header("Authorization", authZ )
            .get(ClientResponse.class);

    response.bufferEntity();
    if (!(response.getStatus() == 201 || response.getStatus() == 200)) {
        throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
    }

    System.out.println(response.getEntity(JSONObject.class));
    return null;

}

輸出總是像這樣:{}

除非您有MessageBodyReader ,否則您不能使用JSONObject JAX-RS實體提供者中查看更多內容。 您當前正在使用的提供程序(可能是Jackson)僅支持JavaBean POJO或它們的集合。 例如,如果您有此JSON

{ "property1" : "value1", "property2": "value2" }

然后,您需要像這樣的POJO

public class Bean {
    private String property1;
    private String property2;
    // getters and setters
}

然后,您可以執行getEntity(Bean.class) 之所以得到一個空對象,是因為反序列化可以解決設置程序的問題。 它在JSON上查找與設置器匹配的屬性,並使用它來設置屬性。 JSON對象你的JSON屬性沒有setter方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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