我写了一件运动衫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框架,我可以用它来手动生成对象吗?
谢谢, 阿贾伊
答案 0 :(得分:3)
我的问题是我有办法吗? 把对象取回而不是作为一个 字符串?
没有。使用以下命令注释Web服务时
@Produce(MediaType.APPLICATION_XML)
您正在有效地指定响应的内容,即XML。 REST服务使用HTTP协议的许多现有功能,因此您无法返回Java对象 - 如Corba或EJB。
如果要在客户端代码中将对象从XML反序列化为Java,可以在许多框架中进行选择:JAXB,XStream是最受欢迎的。 建议您在客户端和服务器上使用相同的序列化框架。