2014-10-31 61 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負載輸出。

希望這會幫助你。