2011-09-06 27 views
2

在我們的應用程序中有一個返回Company的JSON表示的工作方法。我通過添加MediaType.APPLICATION_XML來修改@Produces。但是,當我將請求中的「Accept」頭設置爲「application/xml」時,Jersey返回一個400「錯誤請求」。爲什麼在Jersey中使用MIME類型application/xml請求資源時出現「無效請求」?

@GET 
@Path("{unique_id}") 
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
public Response getCompanyDetail(@PathParam("unique_id") long id, @QueryParam("view") final String view, @Context UriInfo ui) { 

這是日誌消息:

2011-09-07 12:35:58,279 ERROR [STDERR] Sep 7, 2011 12:35:58 PM com.sun.jersey.spi.container.ContainerResponse write 
SEVERE: A message body writer for Java type, class com.dnb.applications.webservice.rest.view.response.GetCompanyDetailResponse, and MIME media type, application/xml, was not found 

......

它工作正常使用JSON,雖然。

這裏是炸燬行:

return responseBuilder.entity(vo).build(); 

'VO' 是我們JAXB註釋視圖對象。它用@XmlType註釋。

如果我們想要添加XML支持,這是正確的方法嗎?我認爲Jersey有一個XML提供程序,並默認處理XML。

在同一個方法中爲JSON和XML構建響應是否存在任何問題?

回答

4

帶註釋的類缺少@XmlRootElement註釋。這適用於返回JSON而不是XML。

相關問題