【问题标题】:How to get object instead of XML from Jeresy rest client如何从泽西休息客户端获取对象而不是 XML
【发布时间】:2011-02-22 13:17:46
【问题描述】:

我已经写了一个球衣 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 框架,我可以用它来手动生成对象吗?

谢谢, 阿杰

【问题讨论】:

    标签: java web-services spring rest jersey


    【解决方案1】:

    我的问题是有什么办法可以 取回对象而不是作为 字符串?

    没有。当您使用以下内容注释您的网络服务时:

    @Produce(MediaType.APPLICATION_XML)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多