我試圖實現Jersey框架以便使用restful方法路由我們的客戶端請求。我已經成功地創建了讀取原始參數的方法,發送它們,甚至可以用對象的JSON響應。然而,我無法做的一件事是從post/put甚至get請求中讀取(即消耗)json對象。我嘗試了一切我可以在網上找到,但無濟於事。由於一些工作問題,我使用Java 6和Jersey 1.19進行了限制。對於我們客戶端的東西,我們使用ExtJS。使用Jersey和ExtJS消耗JSON的其他Web服務
我的ExtJS的請求被格式化爲這樣:
Ext.Ajax.request({
url: 'rest/RestClass/getMessage',
method: 'PUT',
header: {
'Content-Type': 'application/json'
},
jsonData: {
status: {
id: 1,
description: 'Description'
}
},
success: function(response) {
var result = response.responseText;
},
failure: function(response) {
Ext.Msg.alert('Communication Error', 'Failed');
}
});
至於我的後臺的東西去我有這樣的:
@PUT
@Path("/getMessage")
@Consumes(MediaType.APPLICATION_JSON)
public void getMsg(JAXBElement<Status> status) {
System.out.println("status id = " + status.getValue().getId());
System.out.println("status description = " + status.getValue().getDescription());
}
而且我的狀態對象是:
@XmlRootElement
public class Status{
private int id;
private String description;
public Status() {
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
由於我已經發送了成功的請求,因此我已經正確映射了球衣小服務程序等。我的問題是,當我嘗試發送一個帶有json對象的參數時,我得到錯誤。
起初,我得到一個缺失jackson
圖書館的錯誤,即使我使用jersey-bundle-1.19.jar
,它應該包含所需的一切。下載jackson-jaxrs-1.9.13.jar
和增加它的項目後,我現在收到此錯誤:
A message body reader for Java class javax.xml.bind.JAXBElement, and Java type javax.xml.bind.JAXBElement, and MIME media type application/json was not found.
我甚至增加了一些jaxb
罐,以防萬一,但仍然得到同樣的錯誤。我在網上看到的很多例子都不適合我。他們都使用Maven的依賴控制,我們無法訪問,所以我不能確定我們正在使用相同的庫...
我在這裏尋找的是我有的東西的解決方案: 球衣1.19 ExtJS的5 JDK 6 的WebLogic 10.X
的目標是能夠與一個JSONObject作爲參數發送請求,並讓被解碼服務器側到現有的對象類型。
編輯:我甚至增加POJO映射在我的web.xml(我在網上找到它需要的球衣,以支持JSON /對象映射)
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
仍然有同樣的問題。客戶給我一個415 error for unsupported media type
爲什麼要發送JAXBElement類型?它應該只是狀態。像:public void getMsg(狀態狀態)。您不需要註釋:@XmlRootElement –
facundofarias
2015-04-03 13:06:13
因爲我看到的所有示例都有這些註釋。我終於找到了答案,是的,它不需要這些註釋。然而,它需要我的模型構造函數的@JsonCreator註解。 – Konstantine 2015-04-03 16:44:47
因爲我把你引向決議,至少你可以投入贊成票!你不覺得嗎? :) – facundofarias 2015-04-04 17:37:02