如何从Jersey rest客户端获取对象而不是XML

时间:2011-02-22 13:17:47

标签: java web-services spring rest jersey

我写了一件运动衫Restful WS并将其部署到Tomcat上。

public class MyController {
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/getMetricsByClientId/{clientId}")
public BatchProgressMetricsListRoot getAllBatchProgressMetricsForClient(@PathParam("clientId") String clientId) { 
//dosomething
}

在客户端,我正在呼叫

webResource = client.resource(metricsCaptureUrl);  
batchProgressMetrics = webResource.get(BatchProgressMetricsListRoot.class);  
System.out.println(batchProgressMetrics);  

现在我得到了对象但是有默认值。当我从浏览器尝试它时,我得到具有适当值的xml。现在,如果我给

webResource = client.resource(metricsCaptureUrl);  
batchProgressMetrics = webResource.get(String.class);  
System.out.println(batchProgressMetrics);  

它打印正确的xml。我的问题是有没有办法让对象回来而不是字符串?如果没有,那么你可以建议我一些xml框架,我可以用它来手动生成对象吗?

谢谢, 阿贾伊

1 个答案:

答案 0 :(得分:3)

  

我的问题是我有办法吗?   把对象取回而不是作为一个   字符串?

没有。使用以下命令注释Web服务时

@Produce(MediaType.APPLICATION_XML)

您正在有效地指定响应的内容,即XML。 REST服务使用HTTP协议的许多现有功能,因此您无法返回Java对象 - 如Corba或EJB。

如果要在客户端代码中将对象从XML反序列化为Java,可以在许多框架中进行选择:JAXB,XStream是最受欢迎的。 建议您在客户端和服务器上使用相同的序列化框架。