REST Web服务 - 使用xml有效负载

时间:2014-10-31 18:13:03

标签: web-services rest

有人可以显示或重定向示例其他Web服务java代码,它会消耗xml有效负载并使用xml数据吗?我试过谷歌搜索,但它没有多大帮助,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

好的,所以你想构建一个消耗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操作)到订单对象。

这一切都在链接中解释了!

您也可以使用Jersey,这是JAX-RS规范的另一个实现。这是link,显示了您要做的事情。

祝你好运!

答案 1 :(得分:0)

嗨@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;
}

这是我的webservice端点,它接收此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有效负载中生成输出。

希望这会对你有所帮助。