2012-03-02 53 views
0

我有一個用Apache Wink 1.0編寫的簡單Web服務,我想接收並返回JSON數據。我簡單的JSON JAX-RS Web服務有什麼問題?

根據眨眼的文檔,這應該工作...

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public JSONObject postJSON(JSONObject requestJSON) { 
    JSONObject jobj = new JSONObject(); 
    return jobj; 
} 

...但我看到這個錯誤,當我試着打了Web服務......

org.apache.wink.server.internal.handlers.PopulateResponseMediaTypeHandler - 
Content-Type not specified via Response object or via @Produces annotation 
so automatically setting via generic-type compatible MessageBodyWriter providers 

..任何意見或建議,非常感謝!

Rob

+0

您是否嘗試過[「應用/ JSON」(http://incubator.apache.org/wink/1.0/html/JAX-RS%20Request% 20於是%20Response%20Entities.html)? – Thomas 2012-03-02 18:33:54

+0

是的,嘗試過,結果相同。 – 2012-03-02 18:41:04

+0

奇怪的錯誤。該定義看起來是正確的,但是如果這是一個org.json.JSONObject,那麼我不確定它的可序列化。嘗試將您的返回類型更改爲String,以確保至少所有的路徑都是正確的。此外,如果可以,請發佈您的電話簽名。 – Perception 2012-03-02 18:47:23

回答

1

JSONObject的使用有點奇怪。更容易和更靈活的方法:

public MyDto postJSON(MyDto dto) { 
    //do something 
    MyDto md = new MyDto(); 
    return md; 
} 

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class MyDto { 
    private String f1; 
    private int f2; 
    //etc. 
} 

JAX-RS將序列化MyDto做JSON。事實上,更清潔的方法是返回響應對象

public Response postJSON(MyDto dto) { 
    //do something 
    MyDto md = new MyDto(); 
    return Response.ok(md); 
}