【发布时间】:2015-08-04 16:02:13
【问题描述】:
有人可以向我展示或重定向一个示例 rest webservice java 代码,它消耗 xml 有效负载并使用 xml 数据吗?我尝试了谷歌搜索,但没有太大帮助,任何帮助将不胜感激。
【问题讨论】:
标签: web-services rest
有人可以向我展示或重定向一个示例 rest webservice java 代码,它消耗 xml 有效负载并使用 xml 数据吗?我尝试了谷歌搜索,但没有太大帮助,任何帮助将不胜感激。
【问题讨论】:
标签: web-services rest
好的,所以你想构建一个使用 xml 有效负载的服务,然后使用它的数据。
您可以为此使用 resteasy 和 jaxb。你可以找到一个例子here
想法如下:你的 xml 负载必须映射到一个 jaxb 注释对象,resteasy 会为你做 unmarshall 操作。
@POST
@Consumes(MediaType.APPLICATION_XML)
public Response postOrder(Order order){
//Its crime to use System.out.println . Use loggers instead
System.out.println(order.getDestination());
return Response.status(200).entity("Received XML").build();
}
在这个例子中,Order是一个带有jaxb注解的类,当你调用服务时,接收到的xml会被转换(unmarshall操作)为order对象。
链接里都有说明!
您还可以使用 Jersey,它是 JAX-RS 规范的另一种实现。这是一个link,它显示了您正在尝试做的事情..
祝你好运!
【讨论】:
嗨@coder 这是一个非常简单的例子。它消耗 xmlpayload。
以下是使用 JAXB 注解创建的用于消费 xml 数据的类。
@XmlRootElement(name = "demo-value-provider")
public class DemoValueProvider {
private int a;
private int b;
@XmlElement(name = "value-of-a")
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
@XmlElement(name = "value-of-b")
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
这是我的网络服务端点,它接收这个 xml 有效负载作为输入。
@Service("DemoWS")
public class DemoWS {
private final static String MODULE = "DEMO-WS";
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public int methodWithXmlParameter(DemoValueProvider valueProvider) {
return valueProvider.getA() + valueProvider.getB();
}
}
输入的 xml 有效载荷是:
<demo-value-provider>
<value-of-a>1</value-of-a>
<value-of-b>2</value-of-b>
</demo-value-provider>
您还可以在 xml 有效负载中生成输出。
希望这会对你有所帮助。
【讨论】: