2010-02-05 70 views
5

我需要能夠從Java WebService接收這個xml數據,而且我不太確定要在WebMethod中公開什麼內容以便我可以使用它?這只是一個基本的訂單和項目。在.Net中,我只需要傳遞一個訂單對象列表。通過C#Web服務消耗xml數據

我應該擴大一點。這是一個Oracle BPEL流程,需要映射到此公開的C#WebService。我需要公開OrderNumber,ItemNumber等(如XML所示)。我遇到的問題是我會有1到多個項目等,所以我不能只公開基本項目(字符串,整數)。

對於這裏的大多數社區來說,這可能相當微不足道......只是不確定該怎麼做?任何建議不勝感激。

我可以做這樣的事情(建立一個訂單對象,它似乎顯示XML作爲我希望?)

[WebMethod] 
public static List<Orders> GetOrders(List<Orders> ordersList) 
{ 
    List<Orders oList = ordersList; 

    return oList; 
} 

XML:

<Order> 
    <OrderNumber>12345</OrderNumber> 
    <OrderDate>01/25/2010</OrderDate> 
    <OrderSource>Affiliate123</OrderSource> 
    <Items> 
    <ItemNumber>123478</ItemNumber> 
    <Qty>5</Qty> 
    <UOM>EA</UOM> 
    <Description>Test Item</Description> 
    </Items> 
</Order> 
+1

我不明白。你在談論C#,Java還是JavaScript? – 2010-02-05 05:12:58

+0

您是否嘗試使用基於C#的Web服務與基於Java的Web服務進行通信? Web方法在您的應用程序! right – 2010-02-05 05:15:45

+0

涉及什麼協議? – 2010-02-05 05:16:29

回答

0

你已經回答了你自己的問題。 .NET Web服務框架將在SOAP級別將返回類型List<T>映射到T的序列,就像您使用了T[]T的數組)一樣。

當我寫了,就像你這樣的快速出樣的服務,這是它返回的XML:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <GetOrdersResponse xmlns="http://tempuri.org/"> 
     <GetOrdersResult> 
     <Order> 
      <OrderNumber>int</OrderNumber> 
      <OrderDate>dateTime</OrderDate> 
      <OrderSource>string</OrderSource> 
      <Items> 
      <Item xsi:nil="true" /> 
      <Item xsi:nil="true" /> 
      </Items> 
     </Order> 
     <Order> 
      <OrderNumber>int</OrderNumber> 
      <OrderDate>dateTime</OrderDate> 
      <OrderSource>string</OrderSource> 
      <Items> 
      <Item xsi:nil="true" /> 
      <Item xsi:nil="true" /> 
      </Items> 
     </Order> 
     </GetOrdersResult> 
    </GetOrdersResponse> 
    </soap:Body> 
</soap:Envelope> 

你BPEL層應該能夠消耗是相當容易。

+0

酷。我希望這只是我不確定什麼是最好的解決方案是揭露領域的映射。 謝謝。 – scarpacci 2010-02-05 17:36:10

0

你並不需要公開一個WebMethod,因爲我假設你沒有發佈一個WebService,而是你正在使用別人的WebService。

我不確定我是否正確理解您的問題,但如果我在Visual Studio中執行此操作,則只需將WebReference添加到WebService URL並自動創建.NET代理對象,然後即可使用這些對象消耗這些方法。

乾杯, 大額牛

http://blog.mithunbose.com

+0

基本上它是什麼(我沒有完全解釋道歉)是一個Oracle BPEL流程,它需要映射到這個公開的服務。所以我需要公開OrderNumber,ItemNumber等。我的問題是,我可以有1到多個項目等。 – scarpacci 2010-02-05 05:23:34

+0

您可以讓我知道您正在使用的WebMethod的簽名。請在該方法的每個參數和返回值上提一點細節。我猜XML字符串將是返回值? – 2010-02-05 16:21:31

+0

對不起,我沒有注意到你更新了你的文章,並提到了webmethod簽名。 – 2010-02-05 16:22:49