2014-10-31 64 views
1

有人可以显示或重定向我一个示例休息webservice java代码,它使用xml有效内容并使用xml数据?我尝试了谷歌搜索,但它并没有太大的帮助,将不胜感激。REST Webservice - 使用xml负载

回答

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(); 
} 

在这个例子中,命令是一个JAXB注解的类,并且在调用的服务,接收到的XML将被转换(解组操作),以顺序的对象。

这一切都在链接中解释!

您也可以使用Jersey,这是JAX-RS规范的另一个实现。这里有一个link,显示你正在尝试做什么..

祝你好运!

+0

对不起,好像我没有问得那么对,我不想创建客户端,而是一个以xml有效载荷为输入的web服务。 – coder 2014-11-01 02:38:45

+0

谢谢@mendieta – coder 2014-11-04 09:27:32

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

这是我的web服务端点,它接收这个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负载输出。

希望这会帮助你。